有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享
路老师给大家分享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群,玩转技术群,该群里功能:分享技能,电子书,源代码,以及兼职项目等交流,欢迎大家加入一起交流。