Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PDO - bindValue oraz fetchAll
mhs
post
Post #1





Grupa: Zarejestrowani
Postów: 764
Pomógł: 3
Dołączył: 30.04.2003

Ostrzeżenie: (0%)
-----


Witam, mam taki problem: przy pobieraniu danych z wykorzystaniem pdo otrzymuję wszystkie ukośniki (tzn: \" zamiast "), które są dodawane do bazy danych przy insercie. Robię to w sposób następujący (oczywiście fragmenty kodu):

  1.  
  2. // 1 dodaje
  3.  
  4. $q = $this->db->prepare('INSERT INTO help (category) VALUES (:category)');
  5. $q->bindValue('category', $this->category);
  6. $q->execute();
  7.  
  8. // 2 pobieram
  9.  
  10. $q = $this->db->prepare('SELECT category FROM help WHERE category = :category');
  11. $q->bindValue('category', $this->category);
  12. $q->execute();
  13. return $q->fetchAll(PDO::FETCH_ASSOC);
  14.  


Co robię źle (proszę tylko nie bić). Oczywiście nie chce tutaj robić pętli i następnie jechać stripslashes bo to bez sensu.

Pozdrawiam, mhs.
Go to the top of the page
+Quote Post
tvister
post
Post #2





Grupa: Zarejestrowani
Postów: 253
Pomógł: 29
Dołączył: 18.08.2008

Ostrzeżenie: (0%)
-----


Z PDO nie miałem takiego problemu więc w twoim przypadku może wina leży bo stronie magic_quotes.


--------------------
Kto rano wstaje ten leje jak z cebra.
Go to the top of the page
+Quote Post
zegarek84
post
Post #3





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


po pierwsze to źle stosujesz PDO->bindValue i służy ono do odpytywania bazy [dokładniej do wstawiania określonych wartości do różnego typu zapytania]... jeśli trzeba PDO samo doda slashe:
Prepared statements and stored procedures
Cytat
The parameters to prepared statements don't need to be quoted; the driver automatically handles this. If an application exclusively uses prepared statements, the developer can be sure that no SQL injection will occur (however, if other portions of the query are being built up with unescaped input, SQL injection is still possible).


bardzo prawdopodobne, iż miałeś na myśli PDO->bindColumn a w zasadzie powinienem napisać PDOStatement->bindColumn...

w kodzie który podałeś są błędy - przede wszystkim nie:
$q->bindValue('category', $this->category);
a:
$q->bindValue(':category', $this->category);


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 15:34