Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql]Ostatnie ID
Forum PHP.pl > Forum > PHP
230005
Chodzi mi o wyciągnięcie id rekordu, który został dodany do bazy jako ostatni. To znaczy wiem, że istnieje na to przynajmniej kilka sposobów, ale chodzi mi o następujący przypadek - dajmy na to strona jest bardzo popularna i w jednym momencie zarejestruje się np. 1000 użytkowników (celowo przejaskrawiam winksmiley.jpg ). Mam obiekt zapisujący adres użytkownika do jednej tabeli, inny obiekt zapisuje login i hasło do drugiej tabeli, a pola id obu są powiązane. I chciałbym aby po pierwszym insercie (ten, który zapisuje adres) wyciągnęło się właściwe id, a nie użytkownika który załóżmy zarejestrował się milisekundę później. W takim wypadku funkcje max(), czy last_insert_id() mysqla nie zadziałają w pożądany sposób - wyciągną ostatnie id, ale nie TO id smile.gif. Wiem, że taka sytuacja jest bardzo nieprawdopodobna, ale akurat piszę stronę, która może stać się popularna, więc powinienem to wiedzieć :] . Jest na to jakiś dobry sposób? A może można wyciągnąć ostatnie id, które zostało dodane w ramach transakcji?
nexis
mysqli_insert_id" title="Zobacz w manualu PHP" target="_manual - działa bezproblemowo.
230005
Tak, ale co jeśli ostatnia operacja insert, to będzie insert innego użytkownika?? Wtedy wyciągnie niewłaściwe id.
PawelC
To pobierz id użytkownika który się właśnie rejestrował. Użyj do tego where nick='cos tam'
230005
Dżiz, to takie proste biggrin.gif . W takich momentach czuję się na prawdę głupi. Niech ktoś zamknie temat, bo mi wstyd :/ .
SzamanGN
Możesz zastosować takie zapytanie:

INSERT INTO `druga_tabela` (`id`,`id_uzytkownika`) VALUES (NULL,(SELECT `id_uzytkownika` FROM `pierwsza_tabela` WHERE `uzytkownik`="Dodany_uzytkownik" LIMIT 1))

zawarte dwa zapytania w jedym.
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.