Das 'id'-Feld meiner Tabelle wird automatisch vergrößert, wenn ich eine Zeile einfüge. Ich möchte eine Zeile einfügen und dann diese ID erhalten.
Ich würde es so machen, wie ich es gesagt habe, aber gibt es eine Möglichkeit, es zu tun, ohne mir Gedanken über die Zeit zwischen dem Einfügen der Zeile und dem Abrufen der ID zu machen?
Ich weiß, dass ich die Datenbank nach der Zeile abfragen kann, die mit den eingegebenen Informationen übereinstimmt, aber es gibt eine große Änderung, dass es Duplikate gibt, mit dem einzigen Unterschied, dass es sich um die ID handelt.
mysql_insert_id() will convert the return type of the native MySQL C API function mysql_insert_id() to a type of long (named int in PHP). If your AUTO_INCREMENT column has a column type of BIGINT (64 bits) the conversion may result in an incorrect value. Instead, use the internal MySQL SQL function LAST_INSERT_ID() in an SQL query. For more information about PHP's maximum integer values, please see the integer documentation.
\Die MySQL-Funktion
LAST_INSERT_ID()
macht genau das, was Sie brauchen: Sie ruft die ID ab, die während dieser Sitzung eingefügt wurde . Die Verwendung ist daher sicher, auch wenn andere Prozesse (z. B. andere Personen, die genau dasselbe Skript aufrufen) Werte in dieselbe Tabelle einfügen.Die PHP-Funktion
mysql_insert_id()
funktioniert genauso wie das AufrufenSELECT LAST_INSERT_ID()
mitmysql_query()
.quelle
echo mysql_insert_id(); mysql_query('SELECT LAST_INSERT_ID(600)'); echo mysql_insert_id(); mysql_query('SELECT LAST_INSERT_ID()');
Die zweitemysql_insert_id()
spiegelt nicht 600 wider, wo auchmysql_query('SELECT LAST_INSERT_ID()')
immer. Ummysql_insert_id()
die Änderung widerzuspiegeln, müssen Sie zuerst eine Einfügung oder ein Update durchführen (was sich auf 0 Zeilen auswirken kann). Siehe den allerletzten Absatz von: http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-idAuf der PHP-Website ist mysql_insert_id jetzt veraltet und wir müssen PDO verwenden. Gehen Sie dazu wie folgt vor:
quelle
Wie @NaturalBornCamper sagte, ist mysql_insert_id jetzt veraltet und sollte nicht verwendet werden. Sie können jetzt entweder PDO oder mysqli verwenden. NaturalBornCamper erklärte PDO in seiner Antwort, daher werde ich zeigen, wie es mit MySQLi ( MySQL Improved ) unter Verwendung von mysqli_insert_id gemacht wird .
Weitere Beispiele finden Sie in der PHP-Dokumentation: http://php.net/manual/en/mysqli.insert-id.php
quelle
Ich möchte nur ein kleines Detail hinzufügen
lastInsertId()
;Wenn Sie mehr als eine Zeile gleichzeitig eingeben , wird nicht die letzte ID zurückgegeben , sondern die erste ID der Sammlung der letzten Einfügungen.
Betrachten Sie das folgende Beispiel
Was hier passiert ist, dass ich
my_table
zwei neue Zeilen einschiebe. Die ID der Tabelle wird automatisch erhöht. Hier füge ich für denselben Benutzer zwei Zeilen mit einer anderen hinzuvarNumb
.Der Echo-Wert am Ende entspricht der ID der Zeile where
varNumb=1
, dh nicht der ID der letzten Zeile, sondern der ID der ersten Zeile, die in der letzten Anforderung hinzugefügt wurde.quelle
Ein Beispiel.
In der Codezeile
$course_id = $query_new->insert_id;
wird die ID der zuletzt eingefügten Zeile angezeigt. Hoffe das hilft.quelle
Versuchen Sie so, Sie können die Antwort bekommen:
Schauen Sie sich folgende Links an:
http://www.w3schools.com/php/func_mysqli_insert_id.asp
http://php.net/manual/en/function.mysql-insert-id.php
Bitte beachten Sie auch, dass diese Erweiterung in PHP 5.5 veraltet und in PHP 7.0 entfernt wurde
quelle
Ich habe eine Antwort unter dem obigen Link http://php.net/manual/en/function.mysql-insert-id.php gefunden
Die Antwort ist:
quelle
mysql
Antwort, benutze sie niemals.Versuchen Sie das ... es hat bei mir funktioniert!
quelle
Eine andere mögliche Antwort wird sein:
Wenn Sie die Tabelle definieren, mit den Spalten und Daten, die sie haben wird. Die Spalten-ID kann die Eigenschaft AUTO_INCREMENT haben .
Bei dieser Methode müssen Sie sich keine Gedanken über die ID machen , sie wird automatisch erstellt .
Zum Beispiel (aus w3schools )
Hoffe das wird für jemanden hilfreich sein.
Bearbeiten: Dies ist nur der Teil, in dem Sie definieren, wie eine automatische ID generiert werden soll, um sie nach dem Erstellen zu erhalten. Die vorherigen Antworten sind richtig.
quelle