2012-04-29 10 views
5

zu finden Ich frage mich, was die beste Lösung ist, um die letzte eingefügte ID nach einer MySQL-Anfrage zu bekommen?Der beste Weg, um die letzte eingefügte ID in mysql mit PHP

ich gefunden habe, die folgenden Lösungen:

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

oder sogar mit mysql_insert_id PHP-Funktion, aber anscheinend wird diese Funktion nicht gut arbeitet mit bigint (das ist, was ich für ID-Feld bin mit), und wenn es eine Menge von aufeinanderfolgenden sql Anfragen 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?

+1

Das ist eine ungültige Verwendung von LAST_INSERT_ID() dort. Sie würden es wie eine normale Spalte abrufen. mysql_num_rows() wird immer eins für diese Abfrage sein. – Corbin

+0

Ich fand diese Funktion auf php.net und das Poster behauptet, dass diese Funktion alle Probleme löst, die durch mysql_insert_id verursacht werden! –

+1

-1 für die Frage zu stellen, anstatt das Handbuch zu lesen –

Antwort

10
+0

Nun, das ist meine Frage, wie würde es reagieren, wenn es viele aufeinander folgende SQL-Verbindungen und viele SQL-Abfragen gibt. –

+1

@AhouraGhotbi: [LAST_INSERT_ID() '] (http://dev.mysql.com/doc/refman/5.5/en/information-functions.html#function_last-inser-id) ist pro Verbindung. – eggyal

+0

Ich denke, die Verlinkung mit der Dokumentation wäre besser als ein zufälliger Forumsbeitrag ohne Zitate (http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-inser-id). Aber es ist richtig, und die mysql_pconnect-Notiz ist eine gute Nachricht. – Corbin

4

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

+3

Wenn Sie etwas aus der Dokumentation kopieren/einfügen, sollten Sie es angeben. – Corbin

Verwandte Themen