您当前的位置:首页>project频道>PHP PDOException 错误处理

PHP PDOException 错误处理

发布时间:2017-04-18 类型: project频道 编辑: 小猪迷

    对象方式

    PDO 是基于向对象方式,那么错误处理也最好使用面向对象的方式来处理。在 PDOException 中定义了如下方法用于捕获错误信息:


    方法说明
    getMessage()取得文本化的错误信息
    getCode()取得 SQLSTATE 错误代号
    getFile()取得发生异常的文件名
    getLine()取得 PHP 程序产生异常的代码所在行号
    getTrace()backtrace() 数组
    getTraceAsString()取得已格成化成字符串的 getTrace() 信息

    例子:

    <?php
    try{
        //构造PDO连接
        $dbh = "mysql:host=localhost;dbname=test";
        $db = new PDO($dbh, 'root', 'root123123');        //密码错误
    } catch (PDOException $e) {
        print "错误: ".$e->getMessage()."<br />";
        print "行号: ".$e->getLine()."<br />";
        die();
    }
    ?>

    运行该例子,浏览器输出:

    错误: SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)
    行号: 5

    过程方式

    PDO 也支持使用面向过程的方式来处理 PDO 错误。PDO 和 PDOStatement 对象有 errorCode() 及 errorInfo() 方法,如果没有任何错误,errorCode() 返回的是:00000 ,否则就会返回错误代码。

    对前面的数据库操作加上错误处理的例子:

    //表名错误
    $sql = "UPDATE user1 SET email='xiaochen@163.com' WHERE username='小陈'";
    $count = $db->exec($sql);
    if ($db->errorCode() != '00000'){
        $error = $db->errorInfo();
        echo '错误: [',$error['1'],'] ',$error['2'];
        die();
    }
    echo '更新 ',$count,' 条数据记录!';

    运行该例子,浏览器输出:

    错误: [1146] Table 'test.user1' doesn't exist

    errorInfo() 方法返回的是一个数组,第一个键值为 SQLSTATE 错误代码,第二个键值为数据库具体的错误代码,第三个为错误文本信息。


  • 没有评论哦,快来抢个沙发吧
小猪迷

                

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅小猪迷公众号。

234113618

用微信扫描二维码,
加入小猪迷 QQ 群。

PHP PDOException 错误处理-小猪迷PHP[xiaozhumi.com]

PHPPDOException错误处理

https://www.xiaozhumi.com/project/206.html