PDO::errorCode

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

PDO::errorCode Возвращает код SQLSTATE результата последней операции с базой данных

Описание

public PDO::errorCode(): ?string

Список параметров

У этой функции нет параметров.

Возвращаемые значения

Возвращает SQLSTATE - пятисимвольный идентификатор, определённый в стандарте ANSI SQL-92. Первые два символа SQLSTATE отвечают за класс ошибки, а следующие три определяют её подкласс. Класс ошибок 01 означает предупреждение, которому сопутствует возвращаемый код SQL_SUCCESS_WITH_INFO. Классы отличные от 01, за исключением 'IM', означают ошибки выполнения запросов к базе данных. Класс 'IM' свидетельствует об ошибках и предупреждениях, которые вызваны самой реализацией PDO (или, возможно, ODBC, если используется драйвер ODBC). Значение подкласса '000' в любом классе означает, что подкласс для этого SQLSTATE отсутствует.

PDO::errorCode() выдаёт код ошибки только для операций, совершаемых с базой данных напрямую из PDO. Если создать объект PDOStatement методами PDO::prepare() или PDO::query(), и вызвать ошибку его методами, PDO::errorCode() эту ошибку не отобразит. Вам нужно вызвать PDOStatement::errorCode(), чтобы получить код ошибки для операции, выполняемой на определённом объекте PDOStatement.

Возвращает null, если никаких операций над базой данных средствами PDO-объекта не производилось.

Примеры

Пример #1 Получение кода SQLSTATE

<?php
/* Спровоцируем ошибку -- таблицы BONES не существует */
$dbh->exec("INSERT INTO bones(skull) VALUES ('lucy')");

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

Результат выполнения приведённого примера:

PDO::errorCode(): 42S02

Смотрите также

  • PDO::errorInfo() - Получает расширенную информацию об ошибке, произошедшей в ходе последнего обращения к базе данных
  • PDOStatement::errorCode() - Получает код SQLSTATE, связанный с последней операцией в объекте PDOStatement
  • PDOStatement::errorInfo() - Получение расширенной информации об ошибке, произошедшей в результате работы объекта PDOStatement

add a note add a note

User Contributed Notes 3 notes

up
38
Matthias Leuffen
19 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
-20
runrioter at gmail dot com
10 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