php实现的PDO异常处理操作分析


Posted in PHP onDecember 27, 2018

本文实例讲述了php实现的PDO异常处理操作。分享给大家供大家参考,具体如下:

异常处理:

PHP:默认为直接报错

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

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

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

要使用PDO异常处理,必须满足两个条件

1、需要将错误处理模式变成异常模式

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

2、所有可能出错的语句都必须放到错误捕捉语句块里

try{
   //错误捕捉语句块
   //凡是有可能出现错误的语句都放在这
   //一旦出错会立即进入catch语句,把所有的错误信息放到PDOexception $e里面
}catch(PDOExecption $e){
   //将错误信息进行处理
}

例如:

try{
  //连接认证
  $pdo = new PDO('mysql:host=localhost;dbname=project','root','root');
  //设置错误处理模式
  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
  //组织SQL
  $sql= "update pro_student set s_age = 123 where s_id = 20";
  $res = $pdo->exec($sql);
}catch(PDOException $e){
  //var_dump($e);
  //告诉用户在哪个文件的哪一行出现了什么样的错误
  echo '出现异常:<br/>';
  echo '错误出现的位置:' . $e->getFile() . $e->getLine() . '<br/>';
  echo '错误原因:' . $e->getMessage();
  var_dump($e->getTrace());//获取完整的错误数据
  exit;
}

有的时候,如果数据执行没有任何错误,但是就是不符合指定的业务逻辑。一旦出现业务逻辑错误,异常是没有办法捕捉(异常只捕捉语法错误),一般认为的去通过判断语句的执行(结果),主动抛出异常,从而结束错误程序的运行。

语法:throw new PDOException;

$sql = "select * from pro_student where s_id = 20";
$stmt = $pdo->query($sql);
if($stmt->fetchColumn(4) > 100) throw new PDOException; //抛出异常,立马跳转到catch语句块
else{
  echo '没有问题';
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP开发中常用的8个小技巧
Aug 27 PHP
php 保留字列表
Oct 04 PHP
PHP之生成GIF动画的实现方法
Jun 07 PHP
destoon首页调用求购供应信息的地区名称的方法
Aug 21 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
php+mysqli使用预处理技术进行数据库查询的方法
Jan 28 PHP
php实现的数字验证码及数字运算验证码
Jul 30 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
php使用curl模拟多线程实现批处理功能示例
Jul 25 PHP
php use和include区别总结
Oct 13 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
Oct 30 PHP
php微信小程序解包过程实例详解
Mar 31 PHP
CI框架网页缓存简单用法分析
Dec 26 #PHP
CI框架附属类用法分析
Dec 26 #PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 #PHP
CI框架实现创建自定义类库的方法
Dec 25 #PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 #PHP
PHP使用SOAP调用API操作示例
Dec 25 #PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 #PHP
You might like
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
php检测图片木马多进制编程实践
2013/04/11 PHP
php curl获取网页内容(IPV6下超时)的解决办法
2013/07/16 PHP
php以post形式发送xml的方法
2014/11/04 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
js判断两个日期是否相等的方法
2013/09/10 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
input点击后placeholder中的提示消息消失
2016/01/15 Javascript
AngularJs解决跨域问题案例详解(简单方法)
2016/05/19 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
详解node.js 事件循环
2020/07/22 Javascript
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
python让列表倒序输出的实例
2018/06/25 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
工作人员思想汇报
2014/01/09 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
格林童话读书笔记
2015/06/30 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
关于mysql中string和number的转换问题
2022/06/14 MySQL