Hauptmenü

Untermenü

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