Noxy Geschrieben 9. April 2003 Geschrieben 9. April 2003 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 Zitieren
Jaraz Geschrieben 9. April 2003 Geschrieben 9. April 2003 Hi, SELECT * FROM deineTabelle WHERE deineId=LAST_INSERT_ID() Das ganze mit derselben Connection ausgeführt, ist Thread sicher. Gruß Jaraz Zitieren
Crow T. Robot Geschrieben 9. April 2003 Geschrieben 9. April 2003 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. Zitieren
Jaraz Geschrieben 9. April 2003 Geschrieben 9. April 2003 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 Zitieren
Noxy Geschrieben 10. April 2003 Autor Geschrieben 10. April 2003 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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.