Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak odczytać ostatni dodany id w PDO?
Saki
post
Post #1





Grupa: Zarejestrowani
Postów: 240
Pomógł: 2
Dołączył: 5.12.2010
Skąd: Fulda

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


Witam, mam mały problem z oczytaniem ostatniego ID w PDO, normalnie działa mysql_insert_id() szukałem już w sieci i znalzłem na stackoverflow funkcje lastInsertId(), ale ona też nie działa, zwraca cały czas 0
  1. -
  2. - $id = mysql_insert_id();
  3. -
  4. - mysql_query("UPDATE `user` SET aaa=aaa+5 WHERE `id` = $who;") or die ( mysql_error() );
  5. + $id=$db->lastInsertId(); // XXX FIXME XXX
  6. + $db->query("UPDATE `user` SET aaa=aaa+5 WHERE `id` = $who;");


Ten post edytował Saki 5.06.2012, 06:18:54
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Najpierw wykonaj w PDO zapytanie, a potem pytaj o ID..
Go to the top of the page
+Quote Post
Saki
post
Post #3





Grupa: Zarejestrowani
Postów: 240
Pomógł: 2
Dołączył: 5.12.2010
Skąd: Fulda

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


Cytat(markonix @ 5.06.2012, 07:19:54 ) *
Najpierw wykonaj w PDO zapytanie, a potem pytaj o ID..

Wykonuje zapytanie, wpis zostaje dodany, ale lastInsertId() nie pobiera tego id
  1. $db->query("INSERT INTO `XX` (`XX`, `XX`, `XX`, `XX`, XX) VALUES ('$XX', '$XX', '$XX', '$XX', '$XX');");
  2.  
  3. $id=$db->lastInsertId(); // XXX FIXME XXX
  4. $db->query("UPDATE `user` SET XX=XX+5 WHERE `id` = $XX;");


Ten post edytował Saki 5.06.2012, 06:22:36
Go to the top of the page
+Quote Post
markonix
post
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Za każdym razem wklejasz różny kod więc domyślam się, że robisz gdzieś durny błąd, a na forum wklejasz co innego aniżeli masz.

var_dump co pokazuje?
Go to the top of the page
+Quote Post
Saki
post
Post #5





Grupa: Zarejestrowani
Postów: 240
Pomógł: 2
Dołączył: 5.12.2010
Skąd: Fulda

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


Cytat(markonix @ 5.06.2012, 07:28:13 ) *
Za każdym razem wklejasz różny kod więc domyślam się, że robisz gdzieś durny błąd, a na forum wklejasz co innego aniżeli masz.

var_dump co pokazuje?


Nie wklejam róznych kodów, pierwszy kod pochodził z diffa gita jak mogłeś zauważyć po plusach i minusach na początku linii...
Mój kod wygląda tak:
  1. $db->query("INSERT INTO `XX` (`XX`, `XX`, `XX`, `XX`, XX) VALUES ('XX', 'XX', 'XX', 'XX', 'XX');");
  2.  
  3. $id=$db->lastInsertId(); // XXX FIXME XX
  4. $db->query("UPDATE `XX` SET XX=XX+5 WHERE `id` = XX;");
  5.  
  6. // header('Location: XXX.php?id='.$id.'');


a var_dump zwraca: string(1) "0"

Go to the top of the page
+Quote Post
markonix
post
Post #6





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Nic nie muszę zauważyć bo nie korzystam z GITa.
Te XX byś sobie darował, wstydzisz się czegoś?

1) jeżeli zwraca 0 to widocznie masz takie ID - brak kolumny auto-increment
2) najpierw dodajesz wiersz, a zaraz potem go edytujesz. Nie logiczniej jest to zrobić w jednym zapytaniu?
Go to the top of the page
+Quote Post
Saki
post
Post #7





Grupa: Zarejestrowani
Postów: 240
Pomógł: 2
Dołączył: 5.12.2010
Skąd: Fulda

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


Cytat(markonix @ 5.06.2012, 07:40:15 ) *
Nic nie muszę zauważyć bo nie korzystam z GITa.
Te XX byś sobie darował, wstydzisz się czegoś?

1) jeżeli zwraca 0 to widocznie masz takie ID - brak kolumny auto-increment
2) najpierw dodajesz wiersz, a zaraz potem go edytujesz. Nie logiczniej jest to zrobić w jednym zapytaniu?


1, Przy mysql_insert_id() pokazuje id (IMG:style_emoticons/default/smile.gif)
2. Cenna uwaga, dzięki
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 17:46