Ich benutze mysqli_insert_id()
, um die letzte automatische Inkrement-ID auf einer Tabelle zu erhalten, aber es gibt immer '0' zurück.mysqli_insert_id auf zusammengesetzte Abfrage
$sql = "INSERT INTO inventory (SELECT * FROM tmptable)";
$result = mysqli_query($link, $sql);
$newId = mysqli_insert_id($link); //$newID ends up being 0
Die id
Spalte der Tabelle inventory
auf Autoinkrement gesetzt ist, und mysqli_insert_id()
funktioniert auf anderen INSERT
Anfragen an inventory
, die nicht sind das Ergebnis einer SELECT
Anweisung einfügen. Wird die SELECT
-Anweisung aus irgendeinem Grund als letzte Abfrage Vorrang haben, was dazu führen würde, dass mysqli_insert_id()
0 zurückgibt?
Das war die richtige Antwort in meinem Fall. Ich habe aufgehört zu versuchen, so clever zu sein und habe das Ergebnis der SELECT-Anweisung im voraus erhalten, habe seine Felder in Variablen gespeichert und eine normale INSERT-Operation ausgeführt. Zu diesem Zeitpunkt funktionierte mysqli_insert_id wie erwartet. –