![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 316 Pomógł: 36 Dołączył: 2.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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?
Ten post edytował 230005 27.03.2009, 19:05:02 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) ![]() ![]() |
mysqli_insert_id" title="Zobacz w manualu PHP" target="_manual - działa bezproblemowo.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 316 Pomógł: 36 Dołączył: 2.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tak, ale co jeśli ostatnia operacja insert, to będzie insert innego użytkownika?? Wtedy wyciągnie niewłaściwe id.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
To pobierz id użytkownika który się właśnie rejestrował. Użyj do tego where nick='cos tam'
Ten post edytował ExPlOiT 27.03.2009, 19:22:03 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 316 Pomógł: 36 Dołączył: 2.04.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dżiz, to takie proste (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) . W takich momentach czuję się na prawdę głupi. Niech ktoś zamknie temat, bo mi wstyd :/ .
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 94 Pomógł: 14 Dołączył: 11.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.09.2025 - 18:32 |