MySQL: Fehlerbehebung bei LAST_INSERT_ID(), das 0 zurückgibt
In MySQL gibt die Funktion LAST_INSERT_ID() die ID zurück, die für die zuletzt eingefügte Zeile generiert wurde eine AUTO_INCREMENT-Spalte. Sie sind jedoch auf ein Problem gestoßen, bei dem trotz des Einfügens neuer Datensätze in eine Tabelle durchgängig 0 zurückgegeben wird.
Eine Untersuchung ergab, dass das Problem auf Ihre MySQL-Konfiguration zurückzuführen ist. Sie haben erwähnt, dass die PHP-Funktionen mysql_insert_id und PDO::lastInsertId() ebenfalls kein Ergebnis liefern. Dies deutet darauf hin, dass das Problem nicht spezifisch für die Funktion LAST_INSERT_ID() ist, sondern eher in der MySQL-Verbindung selbst liegt.
Die Lösung für dieses Problem besteht darin, den Parameter PersistentConnections in Ihrer MySQL-Konfigurationsdatei auf TRUE zu setzen. Dadurch wird sichergestellt, dass Ihr PHP-Skript für die Dauer seiner Ausführung dieselbe Verbindung zur Datenbank aufrechterhält. Wenn PersistentConnections auf FALSE gesetzt ist, wird für jede Abfrage eine neue Verbindung erstellt, wodurch sich die CONNECTION_ID ändert. Dadurch wird LAST_INSERT_ID() wirkungslos, da die Verbindung mit dem letzten Einfügevorgang nicht nachverfolgt werden kann.
Das Festlegen von PersistentConnections auf TRUE löst dieses Problem, sodass Ihr Skript dieselbe Verbindung wiederverwenden und somit die AUTO_INCREMENT-ID korrekt zurückgeben kann des zuletzt eingefügten Datensatzes. Weitere Informationen finden Sie außerdem in der Dokumentation zu „Jede Abfrage erstellt eine neue CONNECTION_ID()“. Vielen Dank an dnagirl für die Unterstützung bei der Lösung dieses Problems.
Das obige ist der detaillierte Inhalt vonWarum gibt LAST_INSERT_ID() von MySQL 0 zurück und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!