本文作者:心月

PDO扩展的错误处理的3种模式

心月IT博客 2019-03-30
PDO扩展的错误处理的3种模式摘要:在使用PDO扩展执行数据库操作时,如果出现错误是不会直接显示在页面上的,需要通过 使用PDO::errorCode() 和 PDO::errorInfo() 这两个方法来查看错误的具体信息。当然,我们也可以通过改变PDO的错误处理模式来满足项目开发过程中的需求。

在使用PDO扩展执行数据库操作时,如果出现错误是不会直接显示在页面上的,需要通过 使用PDO::errorCode() 和 PDO::errorInfo() 这两个方法来查看错误的具体信息。当然,我们也可以通过改变PDO的错误处理模式来满足项目开发过程中的需求。


PDO的错误处理模式有3种

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

    此为默认模式。 PDO 将只简单地设置错误码,可使用 PDO::errorCode() 和 PDO::errorInfo() 方法来检查语句和数据库对象。如果错误是由于对语句对象的调用而产生的,那么可以调用那个对象的 PDOStatement::errorCode() 或 PDOStatement::errorInfo() 方法。如果错误是由于调用数据库对象而产生的,那么可以在数据库对象上调用上述两个方法。

默认模式下查看错误信息

<?php 
header('content-type:text/html;charset=utf-8');
try{
	$pdo=new PDO('mysql:host=localhost;dbname=test','root','root');	
	$sql="select * from noneTable";
	$pdo->query($sql);	
	echo "<pre>";
	var_dump($pdo->errorCode());
	var_dump($pdo->errorInfo());

}catch(PDOException $e){
	echo $e->getMessage();
}

静默模式


2、PDO::ERRMODE_WARNING 警告模式

除设置错误码之外,PDO 还将发出一条传统的 E_WARNING 信息。如果只是想看看发生了什么问题且不中断应用程序的流程,那么此设置在调试/测试期间非常有用。

除了可以输出错误编码和错误信息外,还可以发出一条警告。

<?php 
header('content-type:text/html;charset=utf-8');
try{
	$pdo=new PDO('mysql:host=localhost;dbname=test','root','root');	
	$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
	$sql="select * from noneTable";
	$pdo->query($sql);	
	echo "<pre>";
	var_dump($pdo->errorCode());
	var_dump($pdo->errorInfo());

}catch(PDOException $e){
	echo $e->getMessage();
}

警告模式


3、PDO::ERRMODE_EXCEPTION 异常模式

    作为设置错误代号的附件,PDO会抛出一个PDOException异常并设置它的属性来反映错误代号和错误信息。这中设置在除错时也是很有用的,因为他会有效的“放大(blow up)”脚本中的出错点,非常快速的指向一个你代码中可能出错区域。(记住:如果异常导致脚本中断,事务处理回自动回滚。)

    异常模式也是非常有用的,因为你可以使用比以前那种使用传统的PHP风格的错误处理结构更清晰的结构处理错误,比使用安静模式使用更少的代码及嵌套,也能够更加明确地检查每个数据库访问的返回值。

<?php 
header('content-type:text/html;charset=utf-8');
try{
	$pdo=new PDO('mysql:host=localhost;dbname=test','root','root');	
	$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
	$sql="select * from noneTable";
	$pdo->query($sql);	
	echo "<pre>";
	var_dump($pdo->errorCode());
	var_dump($pdo->errorInfo());

}catch(PDOException $e){
	echo $e->getMessage();
}

异常模式


文章版权及转载声明:

本文由 心月IT技术博客 博主整理于 2019-03-30
若转载请注明原文及出处:https://www.xinyueseo.com/other/221.html

分享到:
赞(
发表评论
快捷输入:

验证码

    评论列表 (有 0 条评论,人围观)参与讨论