PHP 7.4.24 Released!

PDO::errorInfo

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

PDO::errorInfoVeritabanındaki son işlemle ilgili hata bilgisini döndürür

Açıklama

public PDO::errorInfo(): array

Veritabanındaki son işlemle ilgili hata bilgisini döndürür.

Değiştirgeler

Bu işlevin değiştirgesi yoktur.

Dönen Değerler

Veritabanındaki son işlemle ilgili hata bilgisini içeren bir dizi döndürür. Dizi en azından şu alanları içerir:

Eleman Bilgi
0 SQLSTATE hata kodu (ANSI SQL standardında tanımlanmış beş karakterlik abecesayısal bir tanıtıcı).
1 Sürücüye özgü hatanın kodu.
2 Sürücüye özgü hatanın iletisi.

Bilginize:

SQLSTATE hata kodu atanmamışsa veya sürücüye özgü hata kodu yoksa 0. eleman hariç bütün elemanlar null içerir.

PDO::errorInfo() yöntemi sadece veritabanına doğrudan uygulanan işlemlerin hata bilgisini döndürür. PDO::prepare() veya PDO::query() ile bir PDOStatement nesnesi oluşturup deyim tanıtıcısı üzerinde oluşan bir hatayla ilgili bilgi alacaksanız PDOStatement::errorInfo() yöntemini kullanmalısınız.

Örnekler

Örnek 1 - Bir DB2 veiitabanına kurulan bir PDO_ODBC bağlantısıyla ilgili hata bilgisinin gösterilmesi

<?php
/* Bir hata oluşturalım -- hatalı bir SQL sözdizimi  */
$stmt $dbh->prepare('bozuk sql');
if (!
$stmt) {
    echo 
"\nPDO::errorInfo():\n";
    
print_r($dbh->errorInfo());
}
?>

Yukarıdaki örneğin çıktısı:

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

Ayrıca Bakınız

add a note add a note

User Contributed Notes 4 notes

up
36
alagar86 at gmail dot com
10 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());
}
?>
up
23
quickshiftin at gmail dot com
14 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 */
up
11
mazen at mindcraftinc dot com
13 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
)
up
-38
pere dot pasqual at gmail dot com
6 years ago
I don't know why mazen at mindcraftinc dot com is getting that amount of negative votes: in my case, I've constated that with odbc_driver and an Access database, this method is returning ONE extra field appart from what is stated in this manual.
More precisely, if using the PDO odbc_pdo driver with an Access database, in a fourth array element I'm getting the ODBC Status Return Code.
To Top