Pdo last error

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

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

PDO::errorInfo
Fetch extended error information associated with the last operation on the database handle

Description

public PDO::errorInfo(): array

Parameters

This function has no parameters.

Return Values

PDO::errorInfo() returns an array of error information
about the last operation performed by this database handle. The array
consists of at least the following fields:

Element Information
0 SQLSTATE error code (a five characters alphanumeric identifier defined
in the ANSI SQL standard).
1 Driver-specific error code.
2 Driver-specific error message.

Note:

If the SQLSTATE error code is not set or there is no driver-specific
error, the elements following element 0 will be set to null.

PDO::errorInfo() only retrieves error information for
operations performed directly on the database handle. If you create a
PDOStatement object through PDO::prepare() or
PDO::query() and invoke an error on the statement
handle, PDO::errorInfo() will not reflect the error
from the statement handle. You must call
PDOStatement::errorInfo() to return the error
information for an operation performed on a particular statement handle.

Examples

Example #1 Displaying errorInfo() fields for a PDO_ODBC connection to a DB2 database


<?php
/* Provoke an error -- bogus SQL syntax */
$stmt = $dbh->prepare('bogus sql');
if (!
$stmt) {
echo
"nPDO::errorInfo():n";
print_r($dbh->errorInfo());
}
?>

The above example will output:

PDO::errorInfo():
Array
(
    [0] => HY000
    [1] => 1
    [2] => near "bogus": syntax error
)

See Also

  • PDO::errorCode() — Fetch the SQLSTATE associated with the last operation on the database handle
  • PDOStatement::errorCode() — Fetch the SQLSTATE associated with the last operation on the statement handle
  • PDOStatement::errorInfo() — Fetch extended error information associated with the last operation on the statement handle

alagar86 at gmail dot com

12 years ago


Please note : that this example won't work if PDO::ATTR_EMULATE_PREPARES is true.

You should set it to false

<?php

$dbh
->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);

$stmt = $dbh->prepare('bogus sql');

if (!
$stmt) {

    echo
"nPDO::errorInfo():n";

   
print_r($dbh->errorInfo());

}

?>


quickshiftin at gmail dot com

15 years ago


here are the error codes for sqlite, straight from their site:

The error codes for SQLite version 3 are unchanged from version 2. They are as follows:

#define SQLITE_OK           0   /* Successful result */

#define SQLITE_ERROR        1   /* SQL error or missing database */

#define SQLITE_INTERNAL     2   /* An internal logic error in SQLite */

#define SQLITE_PERM         3   /* Access permission denied */

#define SQLITE_ABORT        4   /* Callback routine requested an abort */

#define SQLITE_BUSY         5   /* The database file is locked */

#define SQLITE_LOCKED       6   /* A table in the database is locked */

#define SQLITE_NOMEM        7   /* A malloc() failed */

#define SQLITE_READONLY     8   /* Attempt to write a readonly database */

#define SQLITE_INTERRUPT    9   /* Operation terminated by sqlite_interrupt() */

#define SQLITE_IOERR       10   /* Some kind of disk I/O error occurred */

#define SQLITE_CORRUPT     11   /* The database disk image is malformed */

#define SQLITE_NOTFOUND    12   /* (Internal Only) Table or record not found */

#define SQLITE_FULL        13   /* Insertion failed because database is full */

#define SQLITE_CANTOPEN    14   /* Unable to open the database file */

#define SQLITE_PROTOCOL    15   /* Database lock protocol error */

#define SQLITE_EMPTY       16   /* (Internal Only) Database table is empty */

#define SQLITE_SCHEMA      17   /* The database schema changed */

#define SQLITE_TOOBIG      18   /* Too much data for one row of a table */

#define SQLITE_CONSTRAINT  19   /* Abort due to contraint violation */

#define SQLITE_MISMATCH    20   /* Data type mismatch */

#define SQLITE_MISUSE      21   /* Library used incorrectly */

#define SQLITE_NOLFS       22   /* Uses OS features not supported on host */

#define SQLITE_AUTH        23   /* Authorization denied */

#define SQLITE_ROW         100  /* sqlite_step() has another row ready */

#define SQLITE_DONE        101  /* sqlite_step() has finished executing */


mazen at mindcraftinc dot com

14 years ago


Some PDO drivers return a larger array. For example, the SQL Server driver returns 5 values.

For example:

<?php

$numRows
= $db->exec("DELETE FROM [TableName] WHERE ID between 6 and 17");

print_r($db->errorInfo());

?>



Result:

Array

(

    [0] => 00000

    [1] => 0

    [2] => (null) [0] (severity 0) []

    [3] => 0

    [4] => 0

)


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

PDOStatement::errorInfo
Fetch extended error information associated with the last operation on the statement handle

Description

public PDOStatement::errorInfo(): array

Parameters

This function has no parameters.

Return Values

PDOStatement::errorInfo() returns an array of
error information about the last operation performed by this
statement handle. The array consists of at least the following fields:

Element Information
0 SQLSTATE error code (a five characters alphanumeric identifier defined
in the ANSI SQL standard).
1 Driver specific error code.
2 Driver specific error message.

Examples

Example #1 Displaying errorInfo() fields for a PDO_ODBC connection to a DB2 database


<?php
/* Provoke an error -- the BONES table does not exist */
$sth = $dbh->prepare('SELECT skull FROM bones');
$sth->execute();

echo

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

The above example will output:

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

See Also

  • PDO::errorCode() — Fetch the SQLSTATE associated with the last operation on the database handle
  • PDO::errorInfo() — Fetch extended error information associated with the last operation on the database handle
  • PDOStatement::errorCode() — Fetch the SQLSTATE associated with the last operation on the statement handle

richardverason at gmail dot com

3 years ago


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', $foo, PDO::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.


Geoffrey Hoffman

7 years ago


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

Array
(
    [0] => 00000
    [1] =>
    [2] =>
)


Deuchnord

7 years ago


Sorry, my example below is not correct, this is a correction:

<?php
$listOfUsers
= $db->query('SELECT name from uesrs');
$errorInfo = $listOfUsers->errorInfo();
if(
$errorInfo[0] != 0)
    die(
$errorInfo[2]);
?>


Вернуться к: PDO

PDO::errorInfo

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

PDO::errorInfo
Получает расширенную информацию об ошибке, произошедшей в ходе
последнего обращения к базе данных

Описание

public array PDO::errorInfo
( void
)

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

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

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

Замечание:

Если не задан SQLSTATE код или драйвер не сообщил об ошибке, то элементы
следующие за нулевым будут иметь значение NULL.

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

Примеры

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


<?php
/* Спровоцируем синтаксическую ошибку SQL */
$stmt $dbh->prepare('bogus sql');
if (!
$stmt) {
    echo 
"nPDO::errorInfo():n";
    
print_r($dbh->errorInfo());
}
?>

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

PDO::errorInfo():
Array
(
    [0] => HY000
    [1] => 1
    [2] => near "bogus": syntax error
)

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

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

Вернуться к: PDO

Содержание

  1. PDO::errorInfo
  2. Description
  3. Parameters
  4. Return Values
  5. Examples
  6. See Also
  7. User Contributed Notes 3 notes
  8. PDOStatement::errorInfo
  9. Description
  10. Parameters
  11. Return Values
  12. Examples
  13. See Also
  14. User Contributed Notes 4 notes
  15. Ошибки и их обработка
  16. PDO::errorCode
  17. Description
  18. Parameters
  19. Return Values
  20. Examples
  21. See Also
  22. Ошибки и их обработка

PDO::errorInfo

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

PDO::errorInfo — Fetch extended error information associated with the last operation on the database handle

Description

Parameters

This function has no parameters.

Return Values

PDO::errorInfo() returns an array of error information about the last operation performed by this database handle. The array consists of at least the following fields:

Element Information
SQLSTATE error code (a five characters alphanumeric identifier defined in the ANSI SQL standard).
1 Driver-specific error code.
2 Driver-specific error message.

If the SQLSTATE error code is not set or there is no driver-specific error, the elements following element 0 will be set to null .

PDO::errorInfo() only retrieves error information for operations performed directly on the database handle. If you create a PDOStatement object through PDO::prepare() or PDO::query() and invoke an error on the statement handle, PDO::errorInfo() will not reflect the error from the statement handle. You must call PDOStatement::errorInfo() to return the error information for an operation performed on a particular statement handle.

Examples

Example #1 Displaying errorInfo() fields for a PDO_ODBC connection to a DB2 database

The above example will output:

See Also

  • PDO::errorCode() — Fetch the SQLSTATE associated with the last operation on the database handle
  • PDOStatement::errorCode() — Fetch the SQLSTATE associated with the last operation on the statement handle
  • PDOStatement::errorInfo() — Fetch extended error information associated with the last operation on the statement handle

User Contributed Notes 3 notes

Please note : that this example won’t work if PDO::ATTR_EMULATE_PREPARES is true.

You should set it to false

-> setAttribute ( PDO :: ATTR_EMULATE_PREPARES , false );
$stmt = $dbh -> prepare ( ‘bogus sql’ );
if (! $stmt ) <
echo «nPDO::errorInfo():n» ;
print_r ( $dbh -> errorInfo ());
>
?>

here are the error codes for sqlite, straight from their site:

The error codes for SQLite version 3 are unchanged from version 2. They are as follows:
#define SQLITE_OK 0 /* Successful result */
#define SQLITE_ERROR 1 /* SQL error or missing database */
#define SQLITE_INTERNAL 2 /* An internal logic error in SQLite */
#define SQLITE_PERM 3 /* Access permission denied */
#define SQLITE_ABORT 4 /* Callback routine requested an abort */
#define SQLITE_BUSY 5 /* The database file is locked */
#define SQLITE_LOCKED 6 /* A table in the database is locked */
#define SQLITE_NOMEM 7 /* A malloc() failed */
#define SQLITE_READONLY 8 /* Attempt to write a readonly database */
#define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite_interrupt() */
#define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */
#define SQLITE_CORRUPT 11 /* The database disk image is malformed */
#define SQLITE_NOTFOUND 12 /* (Internal Only) Table or record not found */
#define SQLITE_FULL 13 /* Insertion failed because database is full */
#define SQLITE_CANTOPEN 14 /* Unable to open the database file */
#define SQLITE_PROTOCOL 15 /* Database lock protocol error */
#define SQLITE_EMPTY 16 /* (Internal Only) Database table is empty */
#define SQLITE_SCHEMA 17 /* The database schema changed */
#define SQLITE_TOOBIG 18 /* Too much data for one row of a table */
#define SQLITE_CONSTRAINT 19 /* Abort due to contraint violation */
#define SQLITE_MISMATCH 20 /* Data type mismatch */
#define SQLITE_MISUSE 21 /* Library used incorrectly */
#define SQLITE_NOLFS 22 /* Uses OS features not supported on host */
#define SQLITE_AUTH 23 /* Authorization denied */
#define SQLITE_ROW 100 /* sqlite_step() has another row ready */
#define SQLITE_DONE 101 /* sqlite_step() has finished executing */

Some PDO drivers return a larger array. For example, the SQL Server driver returns 5 values.

For example:
= $db -> exec ( «DELETE FROM [TableName] WHERE ID between 6 and 17» );
print_r ( $db -> errorInfo ());
?>

Result:

Array
(
[0] => 00000
[1] => 0
[2] => (null) [0] (severity 0) []
[3] => 0
[4] => 0
)

Источник

PDOStatement::errorInfo

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

PDOStatement::errorInfo — Fetch extended error information associated with the last operation on the statement handle

Description

Parameters

This function has no parameters.

Return Values

PDOStatement::errorInfo() returns an array of error information about the last operation performed by this statement handle. The array consists of at least the following fields:

Element Information
SQLSTATE error code (a five characters alphanumeric identifier defined in the ANSI SQL standard).
1 Driver specific error code.
2 Driver specific error message.

Examples

Example #1 Displaying errorInfo() fields for a PDO_ODBC connection to a DB2 database

/* Provoke an error — the BONES table does not exist */
$sth = $dbh -> prepare ( ‘SELECT skull FROM bones’ );
$sth -> execute ();

echo «nPDOStatement::errorInfo():n» ;
$arr = $sth -> errorInfo ();
print_r ( $arr );
?>

The above example will output:

See Also

  • PDO::errorCode() — Fetch the SQLSTATE associated with the last operation on the database handle
  • PDO::errorInfo() — Fetch extended error information associated with the last operation on the database handle
  • PDOStatement::errorCode() — Fetch the SQLSTATE associated with the last operation on the statement handle

User Contributed Notes 4 notes

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

= ‘do something on a mysql table where foo = :bar’ ;
$stmt = prepare ( $sql );
$stmt -> bindValue ( ‘:bar’ , $foo , PDO :: 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.

Источник

Ошибки и их обработка

PDO предлагает на выбор 3 стратегии обработки ошибок в зависимости от вашего стиля разработки приложений.

PDO::ERRMODE_SILENT

До PHP 8.0.0, это был режим по умолчанию. PDO просто предоставит вам код ошибки, который можно получить методами PDO::errorCode() и PDO::errorInfo() . Эти методы реализованы как в объектах запросов, так и в объектах баз данных. Если ошибка вызвана во время выполнения кода объекта запроса, нужно вызвать метод PDOStatement::errorCode() или PDOStatement::errorInfo() этого объекта. Если ошибка вызова объекта базы данных, нужно вызвать аналогичные методы у этого объекта.

PDO::ERRMODE_WARNING

Помимо установки кода ошибки PDO выдаст обычное E_WARNING сообщение. Это может быть полезно при отладке или тестировании, когда нужно видеть, что произошло, но не нужно прерывать работу приложения.

PDO::ERRMODE_EXCEPTION

Начиная с PHP 8.0.0 является режимом по умолчанию. Помимо задания кода ошибки PDO будет выбрасывать исключение PDOException , свойства которого будут отражать код ошибки и её описание. Этот режим также полезен при отладке, так как сразу известно, где в программе произошла ошибка. Это позволяет быстро локализовать и решить проблему. (Не забывайте, что если исключение является причиной завершения работы скрипта, все активные транзакции будут откачены.)

Режим исключений также полезен, так как даёт возможность структурировать обработку ошибок более тщательно, нежели с обычными предупреждениями PHP, а также с меньшей вложенностью кода, чем в случае работы в тихом режиме с явной проверкой возвращаемых значений при каждом обращении к базе данных.

Подробнее об исключениях в PHP смотрите в разделе Исключения.

PDO стандартизирован для работы со строковыми кодами ошибок SQL-92 SQLSTATE. Отдельные драйверы PDO могут задавать соответствия своих собственных кодов кодам SQLSTATE. Метод PDO::errorCode() возвращает одиночный код SQLSTATE. Если необходима специфичная информация об ошибке, PDO предлагает метод PDO::errorInfo() , который возвращает массив, содержащий код SQLSTATE, код ошибки драйвера, а также строку ошибки драйвера.

Пример #1 Создание PDO объекта и установка режима обработки ошибок

= ‘mysql:dbname=testdb;host=127.0.0.1’ ;
$user = ‘dbuser’ ;
$password = ‘dbpass’ ;

$dbh = new PDO ( $dsn , $user , $password );
$dbh -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );

// PDO выбросит исключение PDOException (если таблица не существует)
$dbh -> query ( «SELECT wrongcolumn FROM wrongtable» );
?>

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

Метод PDO::__construct() будет всегда бросать исключение PDOException , если соединение оборвалось, независимо от установленного значения PDO::ATTR_ERRMODE .

Пример #2 Создание экземпляра класса PDO и установка режима обработки ошибок в конструкторе

= ‘mysql:dbname=test;host=127.0.0.1’ ;
$user = ‘googleguy’ ;
$password = ‘googleguy’ ;

$dbh = new PDO ( $dsn , $user , $password , array( PDO :: ATTR_ERRMODE => PDO :: ERRMODE_WARNING ));

// Следующий запрос приводит к ошибке уровня E_WARNING вместо исключения (когда таблица не существует)
$dbh -> query ( «SELECT wrongcolumn FROM wrongtable» );
?>

Источник

PDO::errorCode

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

PDO::errorCode — Fetch the SQLSTATE associated with the last operation on the database handle

Description

Parameters

This function has no parameters.

Return Values

Returns an SQLSTATE, a five characters alphanumeric identifier defined in the ANSI SQL-92 standard. Briefly, an SQLSTATE consists of a two characters class value followed by a three characters subclass value. A class value of 01 indicates a warning and is accompanied by a return code of SQL_SUCCESS_WITH_INFO. Class values other than ’01’, except for the class ‘IM’, indicate an error. The class ‘IM’ is specific to warnings and errors that derive from the implementation of PDO (or perhaps ODBC, if you’re using the ODBC driver) itself. The subclass value ‘000’ in any class indicates that there is no subclass for that SQLSTATE.

PDO::errorCode() only retrieves error codes for operations performed directly on the database handle. If you create a PDOStatement object through PDO::prepare() or PDO::query() and invoke an error on the statement handle, PDO::errorCode() will not reflect that error. You must call PDOStatement::errorCode() to return the error code for an operation performed on a particular statement handle.

Returns null if no operation has been run on the database handle.

Examples

Example #1 Retrieving an SQLSTATE code

/* Provoke an error — the BONES table does not exist */
$dbh -> exec ( «INSERT INTO bones(skull) VALUES (‘lucy’)» );

echo «nPDO::errorCode(): » , $dbh -> errorCode ();
?>

The above example will output:

See Also

  • PDO::errorInfo() — Fetch extended error information associated with the last operation on the database handle
  • PDOStatement::errorCode() — Fetch the SQLSTATE associated with the last operation on the statement handle
  • PDOStatement::errorInfo() — Fetch extended error information associated with the last operation on the statement handle

Источник

Ошибки и их обработка

PDO предлагает на выбор 3 стратегии обработки ошибок в зависимости от вашего стиля разработки приложений.

PDO::ERRMODE_SILENT

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

PDO::ERRMODE_WARNING

Помимо задания кода ошибки PDO выдаст обычное E_WARNING сообщение. Это может быть полезно при отладке или тестировании, когда нужно видеть, что произошло, но не нужно прерывать работу приложения.

PDO::ERRMODE_EXCEPTION

Помимо задания кода ошибки PDO будет выбрасывать исключение PDOException, свойства которого будут отражать код ошибки и ее описание. Этот режим также полезен при отладке, так как сразу известно, где в программе произошла ошибка. Это позволяет быстро локализовать и решить проблему. (Не забывайте, что если исключение является причиной завершения работы скрипта, все активные транзакции будут откачены.)

Режим исключений также полезен, так как дает возможность структурировать обработку ошибок более тщательно, нежели с обычными PHP предупреждениями, а также с меньшей вложенностью кода, чем в случае работы в тихом режиме с явной проверкой возвращаемых значений при каждом обращении к базе данных.

Подробнее об исключениях в PHP см. в разделе Исключения.

PDO стандартизирован для работы со строковыми кодами ошибок SQL-92 SQLSTATE. Отдельные PDO драйверы могут задавать соответствия своих собственных кодов кодам SQLSTATE. Метод PDO::errorCode() возвращает одиночный SQLSTATE код. Если необходима специфичная информация об ошибке, PDO предлагает метод PDO::errorInfo() , который возвращает массив, содержащий SQLSTATE код, код ошибки драйвера, а также строку ошибки драйвера.

Пример #1 Создание PDO объекта и задание режима обработки ошибок

= ‘mysql:dbname=testdb;host=127.0.0.1’ ;
$user = ‘dbuser’ ;
$password = ‘dbpass’ ;

try <
$dbh = new PDO ( $dsn , $user , $password );
$dbh -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION );
> catch ( PDOException $e ) <
echo ‘Подключение не удалось: ‘ . $e -> getMessage ();
>

Метод PDO::__construct() будет всегда бросать исключение PDOException, если соединение оборвалось, независимо от установленного значения PDO::ATTR_ERRMODE . Непойманные исключения фатальны.

Пример #2 Создание экземпляра класса PDO и задание режима обработки ошибок в конструкторе

= ‘mysql:dbname=test;host=127.0.0.1’ ;
$user = ‘googleguy’ ;
$password = ‘googleguy’ ;

/*
По прежнему оберните конструктор в блок try/catch, так как, даже при установке ERRMODE в WARNING,
PDO::__construct всегда будет бросать исключение PDOException, если соединение оборвалось.
*/
try <
$dbh = new PDO ( $dsn , $user , $password , array( PDO :: ATTR_ERRMODE => PDO :: ERRMODE_WARNING ));
> catch ( PDOException $e ) <
echo ‘Соединение оборвалось: ‘ . $e -> getMessage ();
exit;
>

// Следующий запрос приводит к ошибке уровня E_WARNING вместо исключения (когда таблица не существует)
$dbh -> query ( «SELECT wrongcolumn FROM wrongtable» );
?>

Источник

PDO::errorInfo

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

PDO::errorInfo
Получает расширенную информацию об ошибке, произошедшей в ходе
последнего обращения к базе данных

Описание

public PDO::errorInfo
( void
) : array

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

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

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

Замечание:

Если не задан SQLSTATE код или драйвер не сообщил об ошибке, то элементы
следующие за нулевым будут иметь значение NULL.

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

Примеры

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


<?php
/* Спровоцируем синтаксическую ошибку SQL */
$stmt $dbh->prepare('bogus sql');
if (!
$stmt) {
    echo 
"nPDO::errorInfo():n";
    
print_r($dbh->errorInfo());
}
?>

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

PDO::errorInfo():
Array
(
    [0] => HY000
    [1] => 1
    [2] => near "bogus": syntax error
)

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

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

Понравилась статья? Поделить с друзьями:
  • Pdo execute fatal error
  • Pdo error while reading greeting packet
  • Pdo error log
  • Pci контроллер simple communications ошибка драйвера
  • Pci контроллер simple communications ошибка 28 как исправить