PDO ·
Prepared Statements ·
fetch() ·
CRUD ·
Transactions ·
Fehlerbehandlung
PDO (PHP Data Objects) bietet eine sichere und einheitliche Schnittstelle für den Zugriff auf verschiedene Datenbanken. Diese Konzepte sind essenziell für die Entwicklung robuster und sicherer Webanwendungen.
PDO (PHP Data Objects) ist eine Datenbank-Abstraktionsschicht. Die Verbindung wird über einen DSN (Data Source Name) mit Benutzername und Passwort hergestellt.
| Attribut | Beschreibung |
|---|---|
| PDO::ATTR_ERRMODE | Fehlermodus (z.B. PDO::ERRMODE_EXCEPTION) |
| PDO::ATTR_DEFAULT_FETCH_MODE | Standard-Abrufmodus (z.B. PDO::FETCH_ASSOC) |
| PDO::ATTR_EMULATE_PREPARES | Emulation von Prepared Statements (false für echte) |
| PDO::MYSQL_ATTR_INIT_COMMAND | Befehl nach Verbindung (z.B. "SET NAMES utf8") |
PDO::ERRMODE_EXCEPTION) für eine konsistente Fehlerbehandlung. Die Angabe von charset=utf8mb4 ist wichtig für die korrekte UTF-8-Unterstützung.
Prepared Statements schützen vor SQL-Injection, indem sie SQL-Code von Daten trennen. Sie werden mit prepare() vorbereitet und mit execute() ausgeführt.
fetch-Modi bestimmen, wie Daten von der Datenbank abgerufen werden. Die wichtigsten Modi sind FETCH_ASSOC (assoziatives Array), FETCH_OBJ (Objekt) und FETCH_BOTH (beides).
| Modus | Beschreibung |
|---|---|
| PDO::FETCH_ASSOC | Assoziatives Array (Spaltenname → Wert) |
| PDO::FETCH_OBJ | Objekt (Eigenschaften = Spaltennamen) |
| PDO::FETCH_BOTH | Beides (Standard) |
| PDO::FETCH_NUM | Numerisches Array (Index → Wert) |
| PDO::FETCH_CLASS | Objekt einer bestimmten Klasse |
| PDO::FETCH_COLUMN | Nur eine Spalte (0-basiert) |
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC), um bei jedem fetch den Modus nicht neu angeben zu müssen.
CRUD sind die grundlegenden Datenbankoperationen: Create (INSERT), Read (SELECT), Update (UPDATE), Delete (DELETE).
rowCount() gibt die Anzahl der betroffenen Zeilen zurück – nützlich, um zu prüfen, ob eine Operation erfolgreich war.
Transaktionen ermöglichen es, mehrere Datenbankoperationen als eine Einheit auszuführen. Bei einem Fehler können alle Änderungen mit rollBack() rückgängig gemacht werden.
Fehlerbehandlung ist entscheidend für robuste Datenbankanwendungen. Im Exception-Modus werfen PDO-Methoden PDOException bei Fehlern. Alternativ können Fehlercodes mit errorCode() abgefragt werden.
var_dump($e) detailliert ausgeben. Im Produktionsmodus loggen Sie die Fehler und zeigen dem Benutzer eine allgemeine Fehlermeldung.
new PDO
prepare
fetch
INSERT
commit
catch
$pdo = new PDO($dsn, $user, $pass); ·
$stmt = $pdo->prepare("SELECT ... WHERE id = :id"); ·
$stmt->execute([':id' => $id]);