Verification: a143cc29221c9be0

Php add to sql table

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:

$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

$statement = $pdo->prepare("INSERT INTO tabelle (spalte1, spalte2, splate3) VALUES (?, ?, ?)");

$statement->execute(array('wert1', 'wert2', 'wert3'));  

?>

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:

$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

$statement = $pdo->prepare("INSERT INTO users (email, vorname, nachname) VALUES (?, ?, ?)");

$statement->execute(array('[email protected]', 'Klaus', 'Neumann'));  

?>

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:

$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

$statement = $pdo->prepare("INSERT INTO users (email, vorname, nachname) VALUES (:email, :vorname, :nachname)");

$statement->execute(array('email' => '[email protected]', 'vorname' => 'Klaus', 'nachname' => 'Neumann'));  

?>

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:

$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

$neuer_user = array();

$neuer_user['vorname'] = 'Klaus';

$neuer_user['nachname'] = 'Neumann';

$neuer_user['weiteres_feld'] = 'Dieses wird beim Eintragen ignoriert';

$statement = $pdo->prepare("INSERT INTO users (email, vorname, nachname) VALUES (:email, :vorname, :nachname)");

$statement->execute($neuer_user);  

?>

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:

$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

$statement = $pdo->prepare("INSERT INTO users (email, vorname, nachname) VALUES (:email, :vorname, :nachname)");

for($i=0;$i10; $i++) {

   $neuer_user = array('email' => 'email'.$i, 'vorname' => 'Vorname'.$i, 'nachname' => 'Nachname'.$i)

   $statement->execute($neuer_user);  

}

?>

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.