PDOStatement::errorInfo

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

PDOStatement::errorInfo Получение расширенной информации об ошибке, произошедшей в результате работы объекта PDOStatement

Описание

public array PDOStatement::errorInfo ( void )

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

PDOStatement::errorInfo() возвращает массив с информацией об ошибке, соответствующей последней операции объекта PDOStatement. Массив состоит из следующих полей:

Элемент Информация
0 Код ошибки SQLSTATE (пятисимвольный код состоящий из букв и цифр, определенный в стандарте ANSI SQL).
1 Код ошибки, возвращаемый драйвером.
2 Сообщение об ошибке, выданное драйвером.

Примеры

Пример #1 Вывод полей errorInfo() при PDO_ODBC подключении к DB2

<?php
/* Спровоцируем ошибку -- таблицы BONES не существует */
$sth $dbh->prepare('SELECT skull FROM bones');
$sth->execute();

echo 
"\nPDOStatement::errorInfo():\n";
$arr $sth->errorInfo();
print_r($arr);
?>

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

PDOStatement::errorInfo():
Array
(
    [0] => 42S02
    [1] => -204
    [2] => [IBM][CLI Driver][DB2/LINUX] SQL0204N  "DANIELS.BONES" is an undefined name.  SQLSTATE=42704
)

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

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

Коментарии

Автор:
If your query is successful, PDO::errorInfo() still returns an array. For MySQL 5.x, I get the following...

Array
(
    [0] => 00000
    [1] => 
    [2] => 
)
2015-07-22 19:45:10
http://php5.kiev.ua/manual/ru/pdostatement.errorinfo.html
Ansi sql state Error codes can be found here:

https://docs.oracle.com/cd/F49540_01/DOC/server.815/a58231/appd.htm
2015-12-17 23:27:56
http://php5.kiev.ua/manual/ru/pdostatement.errorinfo.html
Seriously errorInfo  is your friend. Use it.

If these look like your google searches then you need errorInfo

"no database error showing in php"
"pdo selects from database but wont insert"
"pdo insert not working"
"isnt pdo just a big hype, should I go back to mysql?"
"how much do surgeons make?"

Trust me it will definitely save you hours of insanity if you make it  a habit to use it in development. Forget E-ALL, it failed me since well, E-ALL apparently doesn't know that I didn't set a default value in my MySQL table and my query wasnt adding anything to it. So always do this

<?php

    $sql 
'do something on a mysql table where foo = :bar';
   
$stmt prepare($sql);
   
$stmt->bindValue(':bar'$fooPDO::PARAM_[DATA TYPE]);
   
$stmt->execute(); 
   
   
// very important during development. But take it off in production 
   
$foo_arr $stmt->errorInfo(); 
   
print_r($foo_arr);

   
//Sample print_r return
    /*
    Array(
        [0] => HY000
        [1] => 1364
        [2] => Field 'phone' doesn't have a default value
    )
   Never have I been so happy to see an error
    */
?>

While its common practice for any decent developer to always watch out and try to catch for errors, even the best of us make mistakes. This is not a replacement for exceptions, but the simplicity is priceless.
2019-06-09 17:51:50
http://php5.kiev.ua/manual/ru/pdostatement.errorinfo.html

    Поддержать сайт на родительском проекте КГБ