Beim Einfügen einer Zeile in eine MySQL-Tabelle, in der sich das Feld „ID“ beim Abrufen automatisch erhöht Die „ID“ der eingefügten Zeile ist eine häufige Aufgabe. Während ein Ansatz darin besteht, die Zeile einzufügen und dann nach der passenden Zeile abzufragen, führt dies zu einer potenziellen Race-Bedingung.
Um dieses Problem zu vermeiden, stellt PHP mysqli_insert_id( )-Funktion, die direkt die ID der zuletzt eingefügten Zeile für eine bestimmte MySQL-Verbindung abruft. Diese Methode stellt sicher, dass die ID zuverlässig abgerufen wird, ohne dass das Risiko von Race Conditions oder doppelten Ergebnissen besteht.
<?php $link = mysqli_connect('127.0.0.1', 'my_user', 'my_pass', 'my_db'); mysqli_query($link, "INSERT INTO mytable (1, 2, 3, 'blah')"); $id = mysqli_insert_id($link); ?>
Eine andere Methode beinhaltet die Verwendung der LAST_INSERT_ID()-Funktion von MySQL. Dies kann in einem Einfügevorgang mit mehreren Tabellen verwendet werden. Bei diesem Ansatz wird die Zeile in mehrere Tabellen eingefügt und die Funktion LAST_INSERT_ID() stellt sicher, dass die „ID“ an alle Tabellen weitergegeben wird, die innerhalb der einzelnen Abfrage geändert wurden.
<?php mysqli_query($link, "INSERT INTO my_user_table ...; INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())"); ?>
Hinweis: Jede MySQL-Verbindung verwaltet ihre eigene „ID“-Verfolgung und verhindert so Konflikte zwischen verschiedenen Verbindungen.
Das obige ist der detaillierte Inhalt vonWie kann ich die Auto-Inkrement-ID nach einem INSERT in PHP/MySQL effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!