PDO异常处理

Posted 下页、再停留

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PDO异常处理相关的知识,希望对你有一定的参考价值。

PDO提供了三种处理错误的方式

PDO::ERRMODE_SILENT:静默模式(默认)

PDO::ERRMODE_WARNING:警告模式

PDO::ERRMODE_EXCEPTION:异常模式

示例:

<?php 

/**
* 利用PDO对象实现异常处理操作
*/

echo "<meta charset=utf-8>";

//PDO类的实例化

// 1 设置数据源相关参数
$dbms = \'mysql\';    //选择数据库类型
$host = \'localhost\';
$port = \'3306\';
$dbname = \'test\';
$charset = \'utf8\';
$dsn = "$dbms:host=$host;port=$port;dbname=$dbname;charset=$charset";

// 2 设置用户名密码
$user = \'root\';
$pwd = \'\';

// 3 实例化PDO类
$pdo = new PDO($dsn,$user,$pwd);

// 4 设置PDO相关属性
$pdo->setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER);

// 5 修改PDO为异常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

try{  
//监听 $sql = "select * from pdo"; $stmt = $pdo->query($sql); }catch(PDOException $e){ //捕获异常 echo "错误信息为:".$e->getmessage()."<br/>"; echo "错误代码为:".$e->getCode()."<br/>"; echo "错误文件为:".$e->getFile()."<br/>"; echo "错误行号为:".$e->getLine()."<br/>"; }

注意:在PDO中进行异常处理不需要实例化异常类并抛出异常,因为我们在第5步已经把PDO修改为异常模式

($pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);)

 

运行结果:正常显示没有异常!

把监听代码块故意写错,看看是否抛出异常,抛出的异常是不是我们想要的!

//监听
    $sql = "select * from pdo111";  //把 pdo 错改成 pdo111

结果:

抛出异常信息,说明异常处理成功! 

以上是关于PDO异常处理的主要内容,如果未能解决你的问题,请参考以下文章

PDO 中支持三种错误处理模式:

php PHP:PDO片段

php PHP:PDO片段

PCL异常处理:pcl 1.8.13rdpartyoostincludeoost-1_64oost ypeofmsvc ypeof_impl.hpp(125): error(代码片段

使用片段中的处理程序时出现非法状态异常

将 PDO 异常记录到 error_reporting 和 error_log