Noxy Geschrieben 9. April 2003 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 9. April 2003 Teilen Geschrieben 9. April 2003 Welche Datenbank? Gruß Jaraz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Noxy Geschrieben 9. April 2003 Autor Teilen Geschrieben 9. April 2003 MySQL unter Linux Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 9. April 2003 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crow T. Robot Geschrieben 9. April 2003 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 9. April 2003 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Noxy Geschrieben 10. April 2003 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.