Frage Der beste Weg, um die zuletzt eingefügte ID in mysql mit PHP zu finden


Ich frage mich, was die beste Lösung ist, die letzte ID nach einer MySQL-Anfrage zu bekommen?

Ich habe folgende Lösungen gefunden:

<?php
function get_current_insert_id($table)
{
    $q = "SELECT LAST_INSERT_ID() FROM $table"; 
    return mysql_num_rows(mysql_query($q)) + 1;
}
?>

oder sogar benutzen mysql_insert_id PHP-Funktion, aber anscheinend funktioniert diese Funktion nicht gut mit Bigint (das ist, was ich für ID-Feld verwende) und wenn es viele aufeinanderfolgende SQL-Abfragen gibt, könnte es unzuverlässig sein.

Kann jemand eine zuverlässige und schnelle Lösung zur Verfügung stellen, um diese Aufgabe zu erfüllen?


5
2018-04-29 10:10


Ursprung


Antworten:


Ist es nicht SELECT LAST_INSERT_ID() zuverlässig und sicher genug?

Von MySQL Doc: Die ID, die generiert wurde, wird auf dem Server für jede Verbindung beibehalten. Dies bedeutet, dass der von der Funktion an einen bestimmten Client zurückgegebene Wert der erste AUTO_INCREMENT-Wert ist, der für die letzte Anweisung generiert wurde, die eine AUTO_INCREMENT-Spalte durch diesen Client betrifft. Dieser Wert kann von anderen Clients nicht beeinflusst werden, auch wenn sie eigene AUTO_INCREMENT-Werte generieren.

Hinweis aus einem Forum: (...) Alle Wetten sind deaktiviert, wenn Sie aus irgendeinem Grund persistente Verbindungen verwenden, z. B. über mysql_pconnect () (...)


10
2018-04-29 10:15



Wenn Sie mehrere Zeilen mit einer einzigen INSERT-Anweisung einfügen, gibt LAST_INSERT_ID () nur den Wert zurück, der für die erste eingefügte Zeile generiert wurde. Der Grund dafür ist, dass es leicht möglich ist, die gleiche INSERT-Anweisung gegen einen anderen Server zu reproduzieren.


4
2018-04-29 10:21