Veröffentlicht 9. April 200322 j Hi Ich hab in PHP folgendes Problem: Ich erstell einen Datensatz in einer SQL Datenbank. Dieser Datensatz bekommt eine ID Nummer, die per auto_increment hochgezählt wird. In der nächsten Zeile brauch ich aber für eine Abfrage genau diese ID Nummer, die ich gerade erst erzeugt hab. Bisher hab ich das so gelöst, dass ich einfach den letzten Datensatz genommen hab, der erzeugt worden ist, aber das ist ja irgendwie nicht ideal. Oder kann man das lassen, da die Wahrscheinlichkeit zu gering ist, dass 2 Datensätze in derselben Milisekunde erzeugt werden, bis die 2. Abfrage durch ist. Gibt es da noch elegante Lösungen? Noxy
9. April 200322 j Hi, SELECT * FROM deineTabelle WHERE deineId=LAST_INSERT_ID() Das ganze mit derselben Connection ausgeführt, ist Thread sicher. Gruß Jaraz
9. April 200322 j Hallo Jaraz! Neben der MySQL-Funktion LAST_INSERT_ID() gibt es auch noch die PHP-Funktion mysql_insert_id(). Diese hat den Vorteil, dass du den Overhead für eine weitere SQL-Abfrage einsparst.
9. April 200322 j Da er geschrieben hat das er das für eine Abfrage braucht, ist der Aufwand so geringer, da der Wert nicht erst aus der Connection abgefragt werden muss, sondern alles Datenbank intern abläuft. mysql_insert_id() arbeitet nur korrekt wenn die auto_increment Spalte von Typ INT ist. Bei BIGINT versagt sie z.B. weswegen ich nur drauf zurückgreife, wenn es unbedingt nötig ist. Aber in diesem Fall würde das wahrscheinlich auch funktionieren. Muss der Fragesteller sich halt aussuchen, wie er es macht. Gruß Jaraz
10. April 200322 j Hi Ich hab jetzt mal die SQL Funktion verwendet und es klappt, als Datentyp hab ich sowiso nur INT, da sollte es keine Probleme geben. Vielen Dank an alle Noxy
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.