CascadiaPHP 2024

PDO::errorCode

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::errorCode Ruft den SQLSTATE-Code ab, der mit der letzten Operation über das Datenbank-Handle verknüpft ist

Beschreibung

public PDO::errorCode(): ?string

Parameter-Liste

Diese Funktion besitzt keine Parameter.

Rückgabewerte

Gibt einen SQLSTATE zurück, eine fünfstellige alphanumerische Kennung, die im ANSI SQL-92-Standard definiert ist. Kurz gesagt besteht ein SQLSTATE aus einem zweistelligen Klassenwert, gefolgt von einem dreistelligen Unterklassenwert. Ein Klassenwert von 01 steht für eine Warnung und wird vom Rückgabewert SQL_SUCCESS_WITH_INFO begleitet. Alle anderen Klassenwerte mit Ausnahme der Klasse "IM" weisen auf einen Fehler hin. Die Klasse "IM" ist spezifisch für Warnungen und Fehler, die sich aus der Implementierung von PDO (oder ODBC, wenn der ODBC-Treiber verwendet wird) selbst ergeben. Der Unterklassenwert "000" in einer Klasse zeigt an, dass es keine Unterklasse für diesen SQLSTATE gibt.

PDO::errorCode() ruft Fehlercodes nur bei Operationen ab, die direkt auf dem Datenbank-Handle ausgeführt werden. Wenn ein PDOStatement-Objekt mittels PDO::prepare() oder PDO::query() erzeugt wird und ein Fehler auf dem Anweisungs-Handle auftritt, zeigt PDO::errorCode() diesen Fehler nicht an. Um den Fehlercode einer Operation zu erhalten, die mit einem bestimmten Anweisungs-Handle durchgeführt wurde, muss PDOStatement::errorCode() aufgerufen werden.

Gibt null zurück, wenn keine Operation über das Datenbank-Handle ausgeführt wurde.

Beispiele

Beispiel #1 Abrufen eines SQLSTATE-Codes

<?php
/* Auslösen eines Fehlers - die Tabelle BONES existiert nicht */
$dbh->exec("INSERT INTO bones(skull) VALUES ('lucy')");

echo
"\nPDO::errorCode(): ", $dbh->errorCode();
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

PDO::errorCode(): 42S02

Siehe auch

  • PDO::errorInfo() - Ruft die erweiterten Fehlerinformationen ab, die mit der letzten Operation über das Datenbank-Handle verknüpft sind
  • PDOStatement::errorCode() - Ruft den SQLSTATE-Code ab, der mit der letzten Operation über das Anweisungs-Handle verknüpft ist
  • PDOStatement::errorInfo() - Ruft die erweiterten Fehlerinformationen ab, die mit der letzten Operation über das Anweisungs-Handle verknüpft sind

add a note

User Contributed Notes 3 notes

up
41
Matthias Leuffen
18 years ago
Hi,

List containing all SQL-92 SQLSTATE Return Codes:
http://www.unix.org.ua/orelly/java-ent/jenut/ch08_06.htm

Use the following Code to let PDO throw Exceptions (PDOException) on Error.

<?PHP
$pdo
= new PDO (whatever);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$pdo->exec ("QUERY WITH SYNTAX ERROR");
} catch (
PDOException $e) {
if (
$e->getCode() == '2A000')
echo
"Syntax Error: ".$e->getMessage();
}
?>

Bye,
Matthias
up
-25
runrioter at gmail dot com
9 years ago
This reading says that "Returns NULL if no operation has been run on the database handle".

When I tested it based on pdo-mysql, I got 00000, not NULL!
To Top