Daten einfügen per INSERT

Dieses Tutorial beschäftigt sich mit verschiedenen Wegen um neue Datensätze einer Tabelle hinzuzufügen.

Daten einfügen mittels prepared Statements

Mittels der INSERT-Anweisung können wir aus unserem PHP-Script heraus Daten zu einer Tabelle hinzufügen. Erneut verwenden wir prepared statements um unsere Daten in die Datenbank zu schreiben:

Beim INSERT-Befehl geben wir zuerst den Namen der Tabelle und die Namen der Spalten an, die wir befüllen möchte. Darauf folgen die Werte. Das erste ? ist ein Platzhalter für den Wert der spalte1, das zweite ? für die zweite Spalte usw. Mittels $statement->execute() führen wir das SQL-Statement aus. Dabei übergeben wir die drei Werte für die drei Platzhalter. In diesem Fall haben wir also einen neuen Datensatz mit den Werten wert1, wert2, wert3 erzeugt.

Für unser Beispiel mit der users-Tabelle könnte der Befehl wie folgt aussehen:

Hier wird ein neuer Benutzer in der user-Tabelle angelegt mit den entsprechenden Informationen. Die übrigen Felder, wie beispielsweise die id werden von MySQL automatisch befüllt. Im Fall der id mit einer fortlaufend aufsteigenden Nummer (da wir bei der Erzeugung der Tabelle die Eigenschaft auto_increment) gesetzt haben. Alle anderen Felder werden mit den Standardwerten gesetzt.

Benannte Parameter

For prepared Statements haben wir die Möglichkeit die Platzhalter entweder anonym per ? zu definieren, oder diese zu benennen. Das obige Beispiel mit benannten Parametern würde wie folgt aussehen:

Hier haben wir die zu befüllenden Parameter mit den Namen :email, :vorname und :nachname benannt. Rufen wir nun $statement->execute() auf, so muss das assoziative Array entsprechende Einträge für diese drei Parameter beinhalten. Weitere Parameter werden ignoriert. Wie und wo ihr das Array übergebt, ist egal:

Mehrere Zeilen eintragen

Mit prepared Statements ist es einfach mehrere neue Zeilen einzutragen. Dazu müsst ihr einfach immer nur erneut $statement->execute($data) aufrufen. Im folgenden Beispiel legen wir die Nutzer Vorname0 bis Vorname9 an:

In dem obigen Beispiel bereiten wir unser Statement zum Eintragen in die Tabelle vor. Danach folgt eine for-Schleife, die bis 10 zählt. In jedem Schleifendurchlauf wird das Array $neuer_user neu mit Werten befüllt und mittels $statement->execute($neuer_user) wird das INSERT-Statement ausgeführt.

Auto Increment Wert abrufen

Es empfiehlt sich in fast allen Tabellen eine Spalte id zu besitzen, die die Auto Increment-Eigenschaft besitzt. Diese ID dient zur eindeutigen Identifizierung unserer Datensätze. Mittel Auto Increment erhalten wir für die Spalte eine fortlaufende Nummerierung, d.h. der erste Eintrag bekommt die ID 1, der zweite Eintrag die ID 2 usw.

Fügen wir nun einen neuen Eintrag in eine Tabelle und möchten die ID erhalten, die dieser neue Eintrag bekommen hat, so geht dies mittel $pdo->lastInsertId();. Dies gibt uns die zuletzt vergebene ID zurück.

Autor: