Datenbankzugriff
PHP und Datenbanken
PHP bietet Schnittstellen zu vielen Datenbanken
- PostgreSQL: kostenlos unter BSD-Lizenz
- MySQL: kompliziertes Lizenzierungsmodell (Alternative MariaDB)
- SQLite: Open Source
- viele kommerzielle Datenbanken (IBM, MS, SAP …)
Häufig wird PHP im Bundle geliefert
- LAMP - Linux + Apache + MySQL + PHP
- WAMP - Windows + Apache + MySQL + PHP
- XAMPP - x + Apache + MySQL + PHP + Perl
PHP-Schnittstellen zu MySQL
PHP Data Objects (PDO)
- abstrahiert vollständig von der Datenbank
- einheitliche Schnittstelle unabhängig von der Datenbank
- Austausch der Datenbank geringem Aufwand möglich
- Einschränkung der verfügbaren Funktionalität durch kleinsten gemeinsamen Nenner
PDO Klassen
- PDO
- Verwaltung und Aufbau von Verbindungen
- Verbindungskonfiguration (z. B. SSL)
- PDOStatement
- Verwaltung von Abfrage (prepared statement)
- Verknüpfung von Variablen mit Abfragen
- Verwaltet die Ergebnisse einer Anfrage
- Muss nach Verwendung wieder freigegeben werden
Verwendung von PDO
- Verbindung zur Datenbank aufbauen
$dbh = new PDO("mysql:host=$host;dbname=$dbName", $user, $pwd); - Statement vorbereiten
$stmt = $dbh->prepare(...); - Parameter setzen
$stmt->bindValue(1, "Meier"); - Statement ausführen
$stmt->execute();
- Über die Ergebnisliste iterieren
while ($row = $stmt->fetch()) { ... } - Statement schließen
$stmt = null; - Verbindung schließen
$dbh = null;
Beispiel: Datenbank-Zugriff
$host = "127.0.0.1";
$user = "web";
$pwd = "HF3qZh8VRKeyBPNY";
$dbName = "web";
$dbh = new PDO("mysql:host=$host;dbname=$dbName", $user, $pwd);
$stmt = $dbh->prepare("SELECT id, nachname, vorname " .
"FROM studenten WHERE nachname = ?");
$stmt->bindValue(1, "Meier");
$stmt->execute();
while ($row = $stmt->fetch()) {
echo $row["id"], " ", $row["nachname"], " ";
echo $row["vorname"], "\n";
}
$stmt = null;
$dbh = null;