Tom: mysql_insert_id()

Beitrag lesen

Hello,

wenn ich die letzte ID, die für ein Autoincrement der Tabelle X erstellt wurde, auslesen will, kann ich das per mysql_insert_id(); tun. Vorraussetzung hierfür ist allerdings, dass vorher eine Query wie z.B. meist INSERT ausgeführt wurde. Was aber, wenn der letzte insert vor einiger Zeit ausgeführt wurde, die Verbindung seit dem geschlossen wurde, und jetzt an einem ganz anderem Datum erst wieder eine Verbindung zur DB hergestellt wird und ich dann über mysql_insert_id(); die Autoincrement ID abfrage? Ist dies dann auch in jedem Fall die zuletzt erstelle? Gibt es keine Sonderfälle in denen das nicht der Fall ist? Funktioniert das überhaupt? Wenn nein, wie bekomme ich ohne vorher ein Insert auszuführen die zuletzt verwendete Autoincrement ID unabhängig davon wann diese erstellt wurde?

Interessante Frage.

Ich _vermute_ jetzt mal: Neue Connetction, neues Glück.
Die PHP-Funktion müsste bei erster Vermutung false liefern.

Die Abfrage in der Datenbank mittels "select last_insert_id();" liefert 0 und keine Warnung. Dann könnte die PHP-Version das auch liefern.

Da 0 ein unzulässiger Wert ist für Autoincrement-Keys, kann er als "neutrales Element" herangezogen werden.

Wenn Du die nächste Autoincrement-ID herausfinden willst, die vergeben würde, wenn Du ein Insert auf die Tabelle ausführst, dann könntest Du das infomation_schema abfragen. Diese ist aber nur solange gültig, bis über _irgendeine_ Verbindung ein Insert durchgeführt wurde, lässt sich also ohne weitere Maßnahmen nicht für die Referenzbildung verwenden.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de