Ich habe den folgenden Code. Die mysqli_insert_id () (in diesem Fall "$ last_row"), die die letzte Zeile der Tabelle zurückgeben soll, gibt immer 0 zurück. Warum ist das so?
%Vor% mysqli_insert_id
gibt nicht die ID der letzten Zeile der Tabelle zurück. Aus den Dokumenten , es:
... gibt die ID zurück, die von einer Abfrage für eine Tabelle mit einer Spalte mit dem AUTO_INCREMENT-Attribut generiert wurde. Wenn die letzte Abfrage keine
INSERT
- oderUPDATE
-Anweisung war oder die geänderte Tabelle keine Spalte mit demAUTO_INCREMENT
-Attribut hat, gibt diese Funktion null zurück .
(Mein Schwerpunkt)
Das heißt, wenn Sie es sofort nach eine Einfügung ausführen würden, die automatisch eine ID erzeugt, würde es auf der gleichen Verbindung, mit der Sie die Einfügung gemacht haben, die für diese Einfügung generierte ID zurückgeben.
Dies wird durch das Beispiel in den oben verlinkten Dokumenten veranschaulicht:
%Vor% Für andere Leute, die hierher kommen, haben Sie vielleicht INSERT IGNORE INTO
ausprobiert und Sie haben einen UNIQUE
-Wert, der bereits eingefügt wurde. In diesem Fall ist diese ID gleich Null.
Sie erhalten auch "Null", wenn MySQL keine Verbindungen mehr hat. Ich bin kein Experte für dauerhafte Verbindungen, aber das könnte jemandem helfen?
Wie Sie wahrscheinlich wissen, wird PHP "mysql" extension persistent unterstützt Verbindungen, aber sie wurden in der neuen "mysqli" -Erweiterung deaktiviert - Peter Zaitsev