MB Dev .tech
Registrieren Login

PDO · Fehler & Handling

← Zurück zu PHP & Datenbank

Fehler gehören dazu – besonders am Anfang. Wichtig ist nicht, dass nie etwas schiefgeht, sondern dass du Fehler früh erkennst, verständlich debuggen kannst und in echten Anwendungen sicher damit umgehst.

Merke
Debug-Infos sind für Entwickler – nicht für Besucher

In der Entwicklung willst du Details sehen. In Produktion willst du nur neutrale Meldungen zeigen und intern loggen.

1) Welche Fehler-Modi gibt es bei PDO?

PDO kann Fehler auf unterschiedliche Weise behandeln. Der wichtigste Punkt ist: Wie bekommst du mit, dass etwas schiefging?

  • PDO::ERRMODE_SILENT – „leise“ (Standard, oft schlecht zum Lernen)
  • PDO::ERRMODE_WARNING – PHP-Warnungen (ok, aber unübersichtlich)
  • PDO::ERRMODE_EXCEPTION – Exceptions (empfohlen)
Tipp
Für Lernprojekte ist ERRMODE_EXCEPTION fast immer ideal

Du bekommst eine klare Fehlermeldung und kannst sie sauber mit try/catch behandeln.

2) Exceptions aktivieren (Standard-Einstellung)

Diese Option setzt du beim Erstellen der Verbindung.

PDO Optionen

$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
];

Ab jetzt wirft PDO bei Fehlern eine PDOException.

3) Fehler abfangen mit try/catch

Mit try sagst du: „Ich probiere das jetzt“. Wenn ein Fehler passiert, springt PHP in den catch-Block.

try/catch

try {
    $stmt = $pdo->prepare("SELECT id FROM users WHERE email = :email");
    $stmt->execute([':email' => 'lina@example.com']);

    $row = $stmt->fetch();

} catch (PDOException $e) {
    // Entwickler-Info: $e->getMessage()
    // Benutzer-Info: "Es ist ein Fehler passiert."
}
Achtung
Details niemals direkt an Benutzer ausgeben

Die Fehlermeldung kann Interna verraten (Tabellennamen, Server, SQL-Details). In echten Apps loggst du Details intern und gibst außen nur eine neutrale Meldung aus.

4) Häufige Fehlerquellen (und wie du sie erkennst)

Gerade am Anfang passieren oft diese Dinge:

  • Falscher Tabellenname oder Spaltenname
  • Syntax-Fehler in SQL (z.B. Komma vergessen)
  • Parametername passt nicht (z.B. :mail vs :email)
  • Datentyp passt nicht (z.B. Text in eine Zahlenspalte)
  • Kein Datensatz gefunden (ist kein SQL-Fehler, aber ein Logik-Fall)
Tipp
Immer zwischen „Fehler“ und „kein Ergebnis“ unterscheiden

„Kein Datensatz“ ist oft völlig normal – das ist kein Grund zu crashen, sondern ein Fall, den du im Code abfangen solltest.

5) Fehler sauber loggen (Prinzip)

In echten Anwendungen möchtest du Fehler intern nachsehen können: Wann ist es passiert? Was war die Ursache? Welche Abfrage war beteiligt?

Ein typisches Muster ist:

  • Benutzer sieht eine neutrale Meldung
  • System loggt Details (Message, Code, Kontext)
  • Entwickler findet den Fehler im Log wieder
Merke
Logs sind für dich – nicht für den Benutzer

Je besser deine Logs, desto weniger „Blindflug“ beim Debuggen.

Fazit

Mit ERRMODE_EXCEPTION und try/catch bekommst du PDO-Fehler zuverlässig in den Griff. Das ist die Grundlage, um Datenbankzugriffe stabil und sicher zu machen – gerade wenn später mehr Benutzer gleichzeitig arbeiten.

Weiterer Schritt
Als Nächstes wird es praxisnäher

In „PHP + DB Praxis“ kombinieren wir alles: Daten lesen, validieren, schreiben – mit typischen Mustern wie Listen, Detailseiten und Formularen.