使用PDO对象和PDO错误处理

zxh5566  2016-07-18 06:19   Hits: 

PDO扩展类库为PHP访问数据库定义了一个轻量级的,一致性的接口,它提供了一个数据访问抽象层,这样,无论你使用什么数据库,你都可以通过一致的函数执行查询和获取数据,大大简化了数据库的操作,并能够屏蔽不同数据库之间的差异。
 
在PDO对象中很多属性可以用来调整PDO的行为或获取底层驱动程序状态,可以通过查看PHP帮助文档获得详细PDO属性列表信息,如果在创建PDO对象时,没有在构造方法中最后一个参数设置过的属性选项,可以在对象创建完毕后,通过PDO对象中的setAttribute()和getAttribute()方法设置和获取这些属性的值。
 
getAttribute()
 
这方法只需要提供一个参数,传递一个特定的属性名称,执行成功返回该属性所指定的值,否则返回null,示例如下:
<?php
$opt = array(PDO::ATTR_PRESISTENT => true);
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
try{
$dbh = new PDO($dsn,$user,$password,$opt);
}catch(PDOException $e){
echo '数据库连接失败:'.$e->getMessage();
}
echo "\nPDO是否关闭自动提交功能: ".$dbh->getAttribute(PDO::ATTR_AUTOCOMMIT);
?>
 
setAttribute()
 
这个方法需要两个参数,第一个参数提供pdo对象特定的属性名,第二个参数则是为这个指定的属性赋值,设置PDO的错误模式,需要如下设置PDO对象中ATR_ERROMODE属性的值;
 
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 设置抛出异常处理错误
 
PDO错误处理模式
 
PDO一共提供了三种不同的错误处理模式,不仅可以满足不同风格的编程,也可以调整扩展处理错误方式
 
1、PDO::ERRMODE_SILENT
 
这是默认模式,在错误发生时不进行任何操作,PDO将只设置错误代码,开发人员可以通过PDO对象中的errorCode()和errorInfo()方法对语句和数据库对象进行检查,如果错误是由于对语句对象的调用产生的。那么可以在那个语句对象上调用errorCode()和errorInfo()方法,如果错误是由于调用数据库对象而产生的,那么可以在那个数据库对象上调用上述两个方法。
 
2、PDO::ERRMODE_EXCEPTION
 
除了设置错误代码以外,PDO还将抛出一个PDOException,并设置其属性,以反映错误代码和错误信息,这种设置在调试当张也很重要,因为它会放大脚本中产生错误的地方,从而可以非常快速的指出代码中有问题的潜在区域,异常模式另一个有用的地方是,与传统的PHP风格警告相比,您可以更清晰的构造自己的错误处理,该模式设置方式如下
 
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
 
SQL标准提供了一组用于指SQL查询结果的诊断代码,称为SQLSTATE代码,PDO定制了使用SQL-92 SQLSTATE错误代码字符串的标准,不同PDO驱动程序负责将它本地代码映射为适当的SQLSTATE代码。
 
3、PDO::ERRMODE_WARNING
 
除了设置错误代码以外,PDO还将发出一条PHP传统的E_WARNING信息,可以使用常规的PHP错误处理程序捕获该警告,如果您只是想看看发生了什么问题,而无意中断应用程序,这个设置很有用。
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
 
上一篇:浅谈表现具体产品banner的制作流程
下一篇:选择和注册域名特别要注意的问题