Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> (PDO) Błąd w INSERT INTO i WHERE jak to napisać ?
Dyktus
post 18.08.2011, 06:07:09
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 1
Dołączył: 8.08.2011
Skąd: Poznań

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


  1. try
  2. {
  3.  
  4. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  5.  
  6. $doit = $pdo -> exec('INSERT INTO `users` (`active`) VALUES(\''.$aktywny.'\') WHERE `login`='.$login.'');
  7.  
  8.  
  9. } catch(PDOException $e)
  10. {
  11. echo 'Wystąpił błąd biblioteki PDO: ' . $e->getMessage();
  12. }
  13.  


Mam takie zapytanie do bazy danych smile.gif wykonane przy użyciu PDO (oczywiście wcześniej wszystko ok łącze się z bazą itd.)

Jeśli chodzi o PDO posiłkowałem się WikiBooks by choć podstawę tego ogarnąć no i w tym kodzie próbuje ustawić użytkownika jako aktywnego. Buduje sobie po prostu taki system logowania. Wiadomo, że muszę sprawdzić którego użytkownika chcę aktywować dlatego jest to WHERE tylko czy jest Ono w dobrym miejscu ?

Oczywiście
  1. $aktywny=1;
  2. $login='przyklad';


Aktywny jest równy 1 ponieważ pole active w bazie danych jest typu int.

Treść błędu:
Cytat
Wystąpił błąd biblioteki PDO: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `login`=test' at line 1test


Próbowałem chyba już na wszelkie sposoby to wpisać, nawet zwykłe zapytanie typu:
  1. $doit = $pdo -> exec('INSERT INTO users SET `active`=1 WHERE `login`='.$login.');


Jeśli ktoś z was ma pomysł co tu jest źle to z góry dziękuję za odpowiedź.
Go to the top of the page
+Quote Post
askone
post 18.08.2011, 06:27:40
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


Cytat(Dyktus @ 18.08.2011, 07:07:09 ) *
  1. $doit = $pdo -> exec('INSERT INTO users SET `active`=1 WHERE `login`='.$login.');


Jeśli ktoś z was ma pomysł co tu jest źle to z góry dziękuję za odpowiedź.


Według mnie błąd jest trywialny spróbuj tak:
  1. $doit = $pdo -> exec('INSERT INTO users SET `active`= 1 WHERE `login`=\''.$login.'\'');


Pozdrawiam


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
nospor
post 18.08.2011, 07:17:55
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Oczywiście kod askone jest poprawny, ale skoro już korzystamy z PDO to czemu nie skorzystać z dobrodziejstwa jakie ono niesie i nie zacząć bindować zmiennych? Bez sensu jest używać PDO i robić wszystko nadal jak w zwykłym mysql_query()


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
konole
post 18.08.2011, 09:37:59
Post #4





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 21.03.2006
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO#Podpinanie
Go to the top of the page
+Quote Post
Dyktus
post 18.08.2011, 20:51:10
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 1
Dołączył: 8.08.2011
Skąd: Poznań

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


Wielkie dzięki za pomoc smile.gif nospore tak właściwie to masz racje smile.gif dostosuje się dzięki wielkie
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 Wersja Lo-Fi Aktualny czas: 26.06.2025 - 07:26