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;

Copyright © 2025 Thomas Smits