PHP 7.4.0RC6 Released!

PDOStatement->errorInfo

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

PDOStatement->errorInfoDeyim üzerindeki son işlemle ilgili hata bilgisini döndürür

Açıklama

PDOStatement::errorInfo ( void ) : array

Dönen Değerler

Deyim üzerindeki son işlemle ilgili hata bilgisini bir dizi olarak döndürür. Dizi şu alanları içerir:

Eleman Bilgi
0 SQLSTATE hata kodu (ANSI SQL standardında tanımlı 5 abecesayısal karakterli bir betimleyici).
1 Sürücüye özgü hata kodu.
2 Sürücüye özgü hata iletisi.

Örnekler

Örnek 1 - Bir DB2 veritabanına açılan bir ODBC bağlantısından hata bilgisinin alınması

<?php
/* Bir hata oluşmasını sağlayalım -- BONES diye bir tablo olmasın */
$sth $dbh->prepare('SELECT skull FROM bones');
$sth->execute();

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

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

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

Ayrıca Bakınız

add a note add a note

User Contributed Notes 4 notes

up
23
Geoffrey Hoffman
4 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] =>
)
up
2
richardverason at gmail dot com
5 months 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.
up
-29
Deuchnord
4 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]);
?>
To Top