相关文章推荐
温柔的香烟  ·  Visual Studio 中的 ...·  1 月前    · 
谦虚好学的感冒药  ·  由: ...·  11 月前    · 
闯红灯的大熊猫  ·  the requested url ...·  2 年前    · 
Authentication Services
Command Line Specific Extensions
Compression and Archive Extensions
Cryptography Extensions
Database Extensions
Date and Time Related Extensions
File System Related Extensions
Human Language and Character Encoding Support
Image Processing and Generation
Mail Related Extensions
Mathematical Extensions
Non-Text MIME Output
Process Control Extensions
Other Basic Extensions
Other Services
Search Engine Extensions
Server Specific Extensions
Session Extensions
Text Processing
Variable and Type Related Extensions
Web Services
Windows Only Extensions
XML Manipulation
GUI Extensions
Keyboard Shortcuts
?
This help
Next menu item
Previous menu item
Previous man page
Next man page
Scroll to bottom
Scroll to top
Goto homepage
Goto search
(current page)
Focus search box

PDOStatement::errorInfo

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

PDOStatement::errorInfo 获取跟上一次语句句柄操作相关的扩展错误信息 [0] => 42S02 [1] => -204 [2] => [IBM][CLI Driver][DB2/LINUX] SQL0204N "DANIELS.BONES" is an undefined name. SQLSTATE=42704

  • PDO::errorCode() - 获取跟数据库句柄上一次操作相关的 SQLSTATE
  • PDO::errorInfo() - Fetch extended error information associated with the last operation on the database handle
  • PDOStatement::errorCode() - 获取跟上一次语句句柄操作相关的 SQLSTATE
  • 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.