有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享
路老师给大家分享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)
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内容如下:
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语句块中。未捕获的异常将会导致脚本中断,并显示堆栈跟踪,让用户了解了哪里出现了问题。
案例:设置异常模式。
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事务处理