![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 3 Dołączył: 29.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Od jakiegoś czasu nurtuje mnie pewna sprawa z funkcją mysql_insert_id(). Czy gdy pobieram id nowo wstawionego prze zemnie rekordu, to mam pewność że jest to id tego rekordu? Może dokładnie na takiej sytuacji: Załóżmy że użytkownik "A" wstawia nowy rekord do tabeli (niech będzie że auto_increment nadał rekordowi id: "2") i pobiera id tego rekordu za pomocą funkcji: mysql_insert_id(), funkcja ta zwraca wtedy id rekordu: "2", a w tym samym czasie wykonuje tą samą czynność użytkownik "B" który wstawił rekord (z nadanym id: "3"), a więc chodzi mi o to: Czy dane sytuacja może się skrzyżować?, w momencie gdy użytkownik "A" wstawia rekord, a potem pobiera numer id powstaje jakaś luka czasowa między tymi czynnościami, i gdy użytkownik "B" wstawi rekord w tym czasie (w czasie tej przerwy między wstawieniem a pobraniem id), to użytkownik "A" otrzyma id swojego rekordu czy id rekordu innego użytkownika (użytkownika "B")? Jeżeli taka sytuacja może się zdarzyć to proszę o podanie sposobu który pozwoli tego uniknąć. Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
Z tego co ja sprawdzalem, to jesli nie podasz parametru do mysql_insert_id to uzyje ona ostatniego TWOJEGO polaczenia w skrypcie.
Tzn w 1 skrypcie mozesz miec np 5 roznych ID_polaczen do bazy i jesli zrobisz na kazdym inserta i bedziesz chcial odczytac INSERT_ID podajac polaczenie to poda Ci dla niego. Jesli natomiast nic nie podasz dostaniesz INSERT_ID z ostatniego TWOJEGO polaczenia. A jak nie bylo zadnego TWOJEGO polaczenia to sie "wywali";) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 10:10 |