有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享
路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。

接着上篇我们来看下sql错误的捕获模式。
1 PDO中捕获SQL语句中的错误
在PDO中有3种方法可以捕获SQL语句中的错误,分别为默认模式、警告模式和异常模式,三者分别对应的对象变量值为:
- 默认模式:PDO::ERRMODE_SILENT
 - 警告模式:PDO::ERRMODE_WARNING
 - 异常模式:PDO::ERRMODE_EXCEPTION
 
1.1 默认模式
在默认模式下设置PDOStatement对象的errorCode属性,但不进行其他任何操作。
案例:添加数据到大V表member里,故意把member写错:
index.php内容编写如下:(故意把member写成members)
<?php
    require "config.php";
    try{
        //实例化PDO对象,采用new的方式
        $pdo = new PDO(DB_DSN,DB_USER,DB_PWD);
    } catch (PDOException $th) {
        echo $th->getMessahe()."<br>";
    }
    $sql = "insert into members(nickname,email)values('luTeacher','luTeacher@163.com')";
    $result = $pdo->prepare($sql);
    $result->execute();
    if(!$result->errorCode()){
        echo "添加数据成功!";
    }else{
        echo "添加异常,错误信息:<br>";
        echo "SQL Query:".$sql;
        echo "<pre>";
        print_r($result->errorInfo());
    }
    include_once('lists.html');
?> 
运行效果如下:

1.2 警告模式
警告模式会产生一个PHP警告,并设置errorCode属性。如果设置的是警告模式,那么除非明确地检查出了错误代码,否则程序会继续按照其方式运行。
修改index.php内容如下:
<?php
    require "config.php";
    try{
        //实例化PDO对象,采用new的方式
        $pdo = new PDO(DB_DSN,DB_USER,DB_PWD);
    } catch (PDOException $th) {
        echo $th->getMessahe()."<br>";
    }
    //设置警告模式
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
    //故意写错member为members
    $sql = "select * from members";
    $result = $pdo->prepare($sql);
    $result->execute();
    include_once('lists.html');
?> 
错误信息如下:

1.3 异常模式
异常模式会创建一个PDOException,并设置errorCode属性。它可以将执行的代码封装到一个try catch语句块中。未捕获的异常将会导致脚本中断,并显示堆栈跟踪,让用户了解了哪里出现了问题。
案例:设置异常模式。
<?php
    require "config.php";
    try{
        //实例化PDO对象,采用new的方式
        $pdo = new PDO(DB_DSN,DB_USER,DB_PWD);
        //设置异常模式
        $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        //故意写错member为members
        $sql = "select * from members";
        $result = $pdo->prepare($sql);
        $result->execute();
        include_once('lists.html');
    } catch (PDOException $th) {
        echo 'PDO异常捕获:<br>';
        echo 'sql语句异常:'.$sql;
        echo '<pre>';
        echo "Code:".$th->getCode()."<br>";
        echo "File:".$th->getFile()."<br>";
        echo "Line:".$th->getLine()."<br>";
        echo "Trace:".$th->getTraceAsString()."<br>";
        echo "Error:".$th->getMessahe()."<br>";
        echo '</pre>';
    }
    
    
    
?> 

2 PDO中的错误处理
在PDO中有两个获取程序中错误信息的方法:errorCode()方法和errorInfo()方法。
2.1 errorCode()方法
errorCode()方法用于获取在操作数据库句柄时所发生的错误代码,这些错误代码被称为SQLSTATE代码。这个代码一般有5个数字和字母组成的。如下图,通过这个错误代码就能判断操作是否成功。

2.2 errorInfo()方法
errorInfo()方法用于获取操作数据库句柄是所发生的错误信息。 errorInfo()方法返回值是一个数组,该数组包含了最后一次操作数据库的错误信息描述,假如数组为errorArray,
- errorArray[0]:SQLSTATE错误码
 - errorArray[1]:错误代码
 - errorArray[2]:错误信息
 
 
下一篇 PDO事务处理
大家如果喜欢技术,并想有个好的交流平台可以关注我的 我的知乎首页,会不定期分享本人觉得比较好的技术类电子书。
另外,自己创建的一个技术qq群,玩转技术群,该群里功能:分享技能,电子书,源代码,以及兼职项目等交流,欢迎大家加入一起交流。




















