夺命雷公狗---PDO NO:4 的错误处理模式
PDO::ATTR_ERRMODE=>错误处理模式:(3)
PDO::ERRMODE_SILENT:不报错误(忽略)(0)
PDO::ERRMODE_WARNING:以警告的方式报错(1)
PDO::ERRMODE_EXCEPTION:以异常的方式报错(推荐使用)(2)
设置方式:2种
在构造时初始化错误模式
通过pdo对象的setAttribute()方法设置。
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
面向过程 $con->errorCode():SQL语句错误代码
$con->errorInfo():错误信息
面向对象
捕获PDOException异常对象
示例1:
// 1. 默认的错误模式(不提示, 我们看到到问题. 被忽视!)
<?php try{ $pdo=new PDO(“mysql:host=localhost;dbname=xsphp”,’root’,”); }catch(PDOException $e){ echo “数据库连接失败:”.$e->getMessage(); exit; } $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING); echo $pdo->getAttribute(PDO::ATTR_ERRMODE).'<br/>'; $affected_rows=@$pdo->exec(“delete from helloworld”); if(!$affected_rows){ echo $pdo->errorCode(); echo “<br/>”; print_r($pdo->errorinfo()); exit; } echo ‘OK';
示例2:
//1. 默认的错误模式(不提示, 我们看到到问题. 被忽视!) //警告模式 PDO::ERRMODE_WARNING //异常的模式 PDO::ERRMODE_EXCEPTION try{ $pdo=new PDO(“mysql:host=localhost;dbname=xsphp”,’root’,”); }catch(PDOException $e){ echo “数据库连接失败:”.$e->getMessage(); exit; } $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); echo $pdo->getAttribute(PDO::ATTR_ERRMODE).'<br/>'; try{ $affected_rows=$pdo->exec(“delete from helloworld”); }catch(PDOException $e){ echo “NO”.$e->getMessage(); } echo ‘OK';
示例3:
//1. 默认的错误模式(不提示, 我们看到到问题. 被忽视!) //警告模式 PDO::ERRMODE_WARNING //异常的模式 PDO::ERRMODE_EXCEPTION try{ $pdo=new PDO(“mysql:host=localhost;dbname=xsphp”,’root’,”); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){ echo “数据库连接失败:”.$e->getMessage(); exit; } try{ //使用PDO中的方法执行语句 }catch(PDOException $e){ echo “错误:”.$e->getMessage(); }