Dokładnie z tym max(id) to jest kiepskie rozwiązanie, ale jak ktoś sobie tak rozplanuje to potem musi bardzo skrupulatnie pilnować kodu, by mieć gwarancję że pobierane/nadawane ID jest właściwym.
A co powiecie o
Kod
mysql_insert_id()
Zwraca wartość ostatnio dodanego ID, tylko z tego co wnioskuje to kiedy dojdzie do sytuacji że inny użytkownik parę milisekund po dodanej przez nas wartośći doda inną wówczas zwróci nie ten co trzeba ID.
Z tego co przeglądam manuala to można też wywołać zapytanie do bazy danych o treści
Kod
SELECT LAST_INSERT_ID() FROM $table
Ale w tym przypadku może zaistnieć sytuacja jak powyżej, choć prawdopodobieństwo jest już mniejsze, bo sprecyzowane do konkretnej tabeli. Ale z tego co wnioskuję podobnie będzie z
Kod
SHOW TABLE STATUS LIKE $table
.
Chyba jednak najlepszą metodą okazuje się dodanie najpierw wartości do bazy danych (w kroku 1) a w kolejnym odczytanie ID na podstawie kilku wybranych wartośći (które zostały dodane), wtedy ma się 100% gwarancję że uzyskany ID jest tym który został nadany we wcześniejszej operacji.
W sumie to niepotrzebnie ten temat zakładałem. Bo w sumie chciałem zminimalizować opcje zapytań do bazy danych ale w każdym przypadku wychodzi że i tak to zapytanie musi zostać zadane.
Cytat("Wicepsik")
Sesje
.
O to jakoś przeoczyłem - dzięki za naprowadzenie, chyba bedzie to najlepsza metoda. Jednak kolejny problem mi się pojawia przy tym że w trakcie kiedy użytkownik przechodzi przez kolejne zapytania trafia na zapytanie utworzenia Albumu i w tym przypadku albumy dla unikalności są tworzone wg nazwy ID, więc tutaj będę musiał albo wygenerować jakąś liczbe losową np której zostanie utworzony album (i w bazie danych zapisać pod jaką nazwą widnieje ten album), albo wrócić do poprzedniej metody z pobieraniem ID. Musze ponownie rozważyc jak identyfikować albumy by zachować unikalność.