Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak odczytać ostatni dodany id w PDO?
Forum PHP.pl > Forum > PHP
Saki
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;");
markonix
Najpierw wykonaj w PDO zapytanie, a potem pytaj o ID..
Saki
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;");
markonix
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?
Saki
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"

markonix
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?
Saki
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 smile.gif
2. Cenna uwaga, dzięki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.