MySQLi mysql_insert_id()

ID des gespeicherten Datensatzes ermitteln

Der Insert-Befehl ist bereits besprochen und im Normalfall reicht diese Information aus, um einen neuen Datensatz per Skript in der Datentabelle anzulegen. Nehmen wir an, dass über ein Formular ein Eintrag als Kommentar auf einem Portal erstellt wurde, dann wird der Eintrag gespeichert - es sei denn, man hat Spam erkannt, bösartige Wörter oder sonstige Gründe, warum der Kommentar nicht aufgenommen werden sollte.

Mit mysqli_insert_id() auf die gespeicherte ID-Nummer zugreifen

Nun gibt es aber Situationen, in denen man wissen müsste, unter welcher ID dieser Datensatz gespeichert wurde. Stellen wir uns folgenden Fall vor: in einem Portal können Anwender oder auch Mitarbeiter Daten über ein Formular speichern, bei denen auch ein Bild mitgeschickt werden kann. Die Daten (Überschrift, Text, Beschreibungen, Datum etc.) sind einfach zu speichern und das erledigt für uns der insert-Befehl wie gehabt.

Nur das Bild braucht eigene Spielregeln und oftmals wird die Bildinformation in einer eigenen Tabelle festgehalten oder aber nach dem Übertragen als Zusatzinformation im Datensatz gespeichert. Manchmal braucht man auch die ID des Datensatzes, weil das Bild als Name die ID-Nummer tragen soll.

Theoretisch könnte man nun in der Datenbank eine Abfrage mit select starten, welche ID-Nummer der letzte Datensatz hat, denn den hat man ja gerade gespeichert. Aber das kann ungenau werden, wenn viele Datensätze zeitgleich angelegt wurden und aufwendiger als nötig ist es auch.

Es gibt in MySQLi nämlich eine elegante Alternative und das ist der mysqli_insert_id()-Befehl. mysqli_insert_id() fragt die ID-Nummer ab, die beim Speichern angelegt wurde und damit hat man die Information ohne einer weiteren select-Abfrage.

// speichern des Datensatzes
mysqli_query($mysqli,"insert into gaestebuch values('','".$name."', '".$text."', '".$url."')");

// ermitteln der eben gespeicherten ID-Nummer
$id = mysqli_insert_id($mysqli);

Im ersten Schritt wurde einfach ein Datensatz angelegt und wir haben vom Artikel Daten speichern das Beispiel für ein Gästebuch herangezogen. Der Datensatz ist gespeichert und nun gibt es einen zweiten Schritt mit mysqli_insert_id, bei dem auf $mysqli zurückgegriffen wird, also auf das Objekt der Zugangsdaten für die Datenbank. Der Befehl sieht nach, welche ID-Nummer gerade bearbeitet wurde und meldet das Ergebnis zurück.

Jetzt könnte man mit der ID-Nummer, die in der Variable $id gespeichert ist, weitere Aktionen setzen - wie zum Beispiel in einer Statistiktabelle den Wert des Nutzers mit der ID-Nummer um eins erhöhen, weil er wieder etwas geschrieben hat oder das Bild des Nutzers eigens speichern. Die ID-Nummer zieht sich durch, bei Bestellungen, bei Anfragen, bei Rechnungen und kann daher verschieden eingesetzt werden - man muss sie nur wissen und dafür ist dieser vorgestellte Befehl eine große Hilfestellung.

Lesen Sie auch

So richtig aus dem Vollen kann man dann schöpfen, wenn man die Programmiersprache PHP mit dem System der MySQLi-Datenbank verknüpft. Der SQL-Befehlssatz bleibt bestehen, wird aber durch die PHP-Umgebung ummantelt, damit beide kommunizieren können: die Datenbank weiß, was Sache ist und PHP versteht die Antwort. MySQL + PHP bedeutet, dass man direkt vom Skript aus auf die Daten zugreifen kann.

Die Grundvoraussetzung ist einmal das Anlegen einer Datenbank, was auch von PHP aus möglich ist und dann braucht es die Verbindung zur Datenbank.

Damit ist die Grundbasis gelegt und man kann Tabellen anlegen und die Daten speichern. Dabei kann mit mysqli_insert_id die aktuelle laufende Nummer für weitere Aktionen nützlich sein und wichtig ist das Verständnis mit mysqli_close, um nicht mehr gebrauchte Verbindungen zu beenden. Wichtig ist aber auch die richtige Schreibweise beim Arbeiten mit den Daten.

Das Herzstück ist aber die Abfrage. Zweifelsohne braucht man delete und andere Befehle auch, um zu manipulieren, aber mit select kann man verschiedenste Abfragen durchführen wie nach Kriterium, Menge oder auch als Stringabfrage samt Sortierungsangabe.

Diesen Artikel teilen

Kategorien

Grundlagen
HTML-Grundlagen
CSS-Grundlagen
Javascript-Grundlagen
PHP-Grundlagen
MySQL-Grundlagen
SEO-Grundlagen

Infos, Tipps, Vermarktung
Webdesign-Lexikon
Online-Werbung
PHP-Codeschnipsel