php PDO异常处理详解


Posted in PHP onNovember 20, 2016

异常处理:

PHP:默认为直接报错

MYSQL:默认为静默模式,错就错,不报错

PDO:默认为静默模式,错就错,不报错

以前,当PHP碰到错误的时候,会直接报错,错误处理会变得相当麻烦。后来,当错误发生之后,会将错误信息不再直接输出,放到一个类的对象里(PDOException)

pdo异常处理设置:

设置PDO::ATTR_ERRMODE ,有以下三个值:

PDO::ERRMODE_SILENT: 默认模式,不主动报错,需要主动以 $pdo->errorInfo()的形式获取错误信息。

PDO::ERRMODE_WARNING: 引发 E_WARNING 错误,主动报错

PDO::ERRMODE_EXCEPTION: 主动抛出 exceptions 异常,需要以try{}cath(){}输出错误信息。

实例:

方式一:

<?php
//默认是不提示的 需要用 errorCode() errorInfo();
try{
  $pdo = new PDO("mysql:host=localhost;dbname=jikexueyuan","root","");
  //下面这句是默认设置,有无均可
  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_SILENT);
}catch(PDOException $e){
  die("数据库连接失败".$e->getMessage());
}
$sql = "insert into stuu values(null,'jike','w',55)";
$res = $pdo->exec($sql);
if($res){
  echo "OK";
}else{
  echo $pdo->errorCode();
  print_r($pdo->errorInfo());
}

方式二:

<?php
try{
  $pdo = new PDO("mysql:host=localhost;dbname=jikexueyuan","root","");
  //主动以警告的形式报错
  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
}catch(PDOException $e){
  die("数据库连接失败".$e->getMessage());
}
$sql = "insert into stuu values(null,'jike','w',55)";
//若有错误直接在浏览器页面中显示错误信息
$res = $pdo->exec($sql);

方式三:

<?php
try{
  $pdo = new PDO("mysql:host=localhost;dbname=jikexueyuan","root","");
  //主动抛出异常
  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION );
}catch(PDOException $e){
  die("数据库连接失败".$e->getMessage());
}
$sql = "insert into stuu values(null,'jike','w',55)";
//用try{}catch(){}抓取异常
try{
  $res = $pdo->exec($sql);
}catch(PDOException $e){
  echo $e->getMessage();
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用PHP能有所帮助,如果有疑问大家可以留言交流。

PHP 相关文章推荐
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 PHP
PHP正则表达式之定界符和原子介绍
Oct 05 PHP
destoon设置自定义搜索的方法
Jun 21 PHP
PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径
Jun 30 PHP
PHP缓存机制Output Control详解
Jul 14 PHP
php常用文件操作函数汇总
Nov 22 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
php通过前序遍历树实现无需递归的无限极分类
Jul 10 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
PHP5.6读写excel表格文件操作示例
Feb 26 PHP
基于laravel belongsTo使用详解
Oct 18 PHP
Laravel使用模型实现like模糊查询的例子
Oct 24 PHP
php.ini中date.timezone设置详解
Nov 20 #PHP
centos 7.2下搭建LNMP环境教程
Nov 20 #PHP
浅析php中array_map和array_walk的使用对比
Nov 20 #PHP
php解决DOM乱码的方法示例代码
Nov 20 #PHP
使用Yii2实现主从数据库设置
Nov 20 #PHP
php 二维数组时间排序实现代码
Nov 19 #PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 #PHP
You might like
提升PHP执行速度全攻略(下)
2006/10/09 PHP
解决phpmyadmin中文乱码问题。。。
2007/01/18 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
PHP实现的二分查找算法实例分析
2017/12/19 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
IE 下的只读 innerHTML
2009/08/21 Javascript
this和执行上下文实现代码
2010/07/01 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
javascript延时加载之defer测试
2012/12/28 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
Angular2 Service实现简单音乐播放器服务
2017/02/24 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
实用Javascript调试技巧分享(小结)
2019/06/18 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
zbar解码二维码和条形码示例
2014/02/07 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
Python实现基于POS算法的区块链
2018/08/07 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
Booking.com亚太地区:Booking.com APAC
2020/02/07 全球购物
情人节寄语大全
2014/04/11 职场文书
植物生产学专业求职信
2014/08/08 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android