PDO - Fehlerbehandlungn - Die Fehlermethoden
1. Die Methoden
Wenn man sich wider besseres Wissens für ERRMODE_SILENT
als Standardeinstellung entscheidet, so hat man zwei Möglichkeiten,
SQL-Fehler abzufangen, nämlich errorCode
für den Fehlercode und errorInfo
für die Fehlermeldung inklusive
Fehlercodes. Allerdings gibt es ein paar Feinheiten, da beide Methoden sowohl in der PDO
- als auch
PDOStatement
-Klasse vorhanden sind.
2. Ganz wichtig!
Beide Methoden beziehen sich nur auf das zuvor ausgeführte SQL-Statement. Sie sind also nicht allgemein verfügbar, sondern müssen immer
und immer und immer wieder neu gesetzt werden. Sie verhalten sich also genau so wie mysql_error
/mysql_errno
beziehungsweise mysqli_error
/mysql_errno
.
3. Vorgehensweise
Bei normalen Abfragen
... greift man einfach auf die Referenz des PDO
-Objektes zurück.
$pdo = new PDO($server, $user, $password);
// Spalte bla existiert nicht
$query = 'SELECT bla FROM blubb';
$result = $pdo -> query ($query);
if ($pdo -> errorInfo()) {
print_r($pdo -> errorInfo());
}
Als Rückgabewert erhält man dann ein Array mit drei Einträgen.
Array
(
[0] => 42S22
[1] => 1054
[2] => Unknown column 'bla' in 'field list'
)
Der erste Wert steht für den allgemein gültigen und der zweite für den datenbankspezifischen Fehlercode. Im dritten Element erfährt man dann endlich, um was es eigentlich geht.
Bei Prepared Statements
... dagegen muss man die Referenz des PDOStatement
-Objektes nehmen.
$query = 'SELECT bla FROM suche WHERE id = ?'
...
$stmt = $db -> prepare($query);
$stmt -> execute();
if ($stmt->errorInfo()) {
...
}
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt