Kategorien
Weblog

Datenbanken mit PDO abfragen und füllen

Wie jetzt, mysql_connect() geht nicht mehr??? Manche dürfte es selbst heute noch überraschen, wenn sie ihre Anwendung endlich auf PHP umstellen.

Wer heute eine Datenbank abfragen bzw. etwas in eine Datenbank eintragen möchte, sollte auf PDO zurückgreifen, also PHP Data Objects. Diese Methode hat nämlich noch den zusätzlichen Vorteil unabhängig vom Typ der Datenbank zu funktionieren.

Im folgenden Beispiel habe ich eine alte Datenbank genutzt, in der eine Tabelle die Felder “ID”, “firstname”, “lastname” und “age” für eine ganze Reihe von Personen enthielt. Doch ehe wir zur Tabelle kommen, müssen wir erst einmal mit der Datenbank Kontakt aufnehmen:

<?php
$pdo = new PDO('mysql:host=localhost;dbname=universitaet', 'root', '');
?>

Statt localhost müsst ihr die Adresse eurer Datenbank eintragen, nach dbname deren Bezeichnung, in die beiden letzten Felder kommen Nutzername und Passwort. (In meinem Fall läuft alles local über einen XAMP-Server auf meinem Rechner, weshalb ich als User root habe und eben kein Passwort benötige.

<?php
$pdo = new PDO('mysql:host=localhost;dbname=universitaet', 'root', '');
 
$sql = "SELECT * FROM students WHERE age='22' OR age='23'";
foreach ($pdo->query($sql) as $row) {
   echo $row['firstname']." ";
   echo $row['lastname']." ist ".$row['age'].".<br />";
}
?>

Im ersten Schritt lese ich meine Daten aus, mit SELECT * FROM students WHERE age=’22’ OR age=’23’. Das heißt ich nehme alle Datensätze (*) aus der Tabelle students, die entweder 22 oder 23 Jahre alt sind.

Im zweiten Schritt will ich die Ergebnisse natürlich auch anzeigen lassen. Dazu dient die gute alte Funktion query() wie sie bei Datenbanken unerlässlich ist. Ausgegeben wird mit Hilfe von $row. Wie gewohnt nutzen wir dann echo für das anzeigen der Inhalte:

Marie Janssen ist 22.
Tanja Sonntag ist 22.
Isabelle Urban ist 22.
Sandra Vogt ist 23.
Peter Baumann ist 22.
Juri Albrecht ist 22.
Gundula Franke ist 22.
Samuel Krieger ist 23.
Larissa Altmann ist 22.
Elli Mayer ist 22.
Rosemarie Heinrich ist 23.
Bernhard Wilke ist 22.
Philipp Bauer ist 23.
Harry Wegener ist 23.

Für die Eingabe von Daten kommt ebenfalls die Funktion query() zum Einsatz. Inhalte von Datenbanken kann man entweder neu eingeben, oder man bringt sie auf den neuesten Stand.

Einen neuen Eintrag übergibt man folgendermaßen:

<?php
$pdo = new PDO('mysql:host=localhost;dbname=universitaet', 'root', '');
 
$query = $pdo->query("INSERT INTO students (firstname, lastname, age) VALUES ('Thorsten', 'Borsten', '22')");
if ($query) {
	echo "Daten erfolgreich eingetragen";
} else {
	echo "Fehler!";   
}
?>

An die eigentliche Eingabe ist in diesem Fall eine if-Abfrage angehängt, die uns mitteilen soll, ob alles geklappt hat.

Existiert schon ein Eintrag, der nur mit einem Update versehen werden soll, muss folgender Code verwendet werden:

<?php
$pdo = new PDO('mysql:host=localhost;dbname=universitaet', 'root', '');
 
$query = $pdo->query("UPDATE students SET age='23' WHERE lastname='Borsten'");
if ($query) {
	echo "Daten erfolgreich aktualisiert";
} else {
	echo "Fehler!";   
}
?>

Statt INSERT wird jetzt UPDATE genutzt. Hier soll statt 22 nun 23 als Alter in der Tabellenzeile eingetragen werden, in der das Feld lastname mit Borsten gefüllt ist.

Bonus: Daten löschen

Und natürlich lassen sich damit auch Einträge aus der Datenbank löschen:

<?php
$pdo = new PDO('mysql:host=localhost;dbname=universitaet', 'root', '');

$query = $pdo->query("DELETE * FROM students WHERE name="Borsten");
if ($query) {
	echo "Daten erfolgreich gelöscht";
} else {
	echo "Fehler!";
} 

?>

Von Thomas Matterne

Thomas Matterne ist ausgebildeter Journalist mit einem Diplom in Wirtschaftsinformatik. Er arbeitete als Leiter der Online Redaktion von TV touring und als Chefredakteur von DenkZeit. Aktuell schreibt er neben dieser Seite in diversen anderen Online-Veröffentlichungen, wie z.B. das Kaffee Journal. Auf dieser Seite finden sich vor allem Themen aus den Bereichen Content- und Online-Marketing, sowie dem Feld IT allgemein.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.