PHP

Ursache, warum mysql_insert_id() nicht funktioniert

Nach dem Speichern eines Datensatzes in die MySQL Datenbank kann es passieren, dass man für weitere Einträge in andere Tabellen die eindeutige ID des vorher gemachten Datensatzes braucht, zum Beispiel um diese als Fremdschlüssel in Relationstabellen zu nutzen. Die PHP Funktion mysql_insert_id() liefert die eindeutige ID des Eintrages / Datenbankeintrags, die für eine Spalte mit einem AUTO_INCREMENT erzeugt wurde.

Wenn die Methode mysql_insert_id() kein Ergebnis liefert, dann könnte es passieren, dass eine zweite Verbindung die Abfrage stört, wenn keine Verbindungskennung als Parameter in der Funktion angegeben wurde. Bei fehlendem Parameter wird die Kennung der zuletzt aufgebauten Verbindung angenommen. Das heißt, dass man diese Methode in größeren Scripten, welche Daten aus mehreren Tabellen und Datenbanken beziehen, immer mit Kennung nutzen sollte, nämlich folgendermaßen:

$datenbankkennung= mysql_connect('localhost', 'mysql_user', 'mysql_password');
mysql_select_db('mysql_datenbank');

mysql_query("INSERT INTO Tabelle (Name) values ('Mustermann')");

// Liefert uns die ID des eingetragenen Datensatz durch den INSERT Befehl.
echo 'Letzte ID: '.mysql_insert_id($datenbankkennung);