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 相关文章推荐
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
PHP与SQL注入攻击[三]
Apr 17 PHP
php读取javascript设置的cookies的代码
Apr 12 PHP
php数组函数序列之array_combine() - 数组合并函数使用说明
Oct 29 PHP
PHP取进制余数函数代码
Jan 19 PHP
php+mysql查询优化简单实例
Jan 13 PHP
php与Mysql的一些简单的操作
Feb 26 PHP
什么是OneThink oneThink后台添加插件步骤
Apr 13 PHP
php自定义函数实现二维数组排序功能
Jul 20 PHP
php fread读取文件注意事项
Sep 24 PHP
Ubuntu 16.04下安装PHP 7过程详解
Mar 28 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
Sep 03 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
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
基于php中echo用逗号和用点号的区别详解
2018/01/23 PHP
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
Python建立Map写Excel表实例解析
2018/01/17 Python
Python实现简单求解给定整数的质因数算法示例
2018/03/25 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
python操作excel的方法
2018/08/16 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
Python函数参数类型及排序原理总结
2019/12/19 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
Python 通过监听端口实现唯一脚本运行方式
2020/05/05 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
一套C++笔试题面试题
2012/06/06 面试题
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
党员十八大心得体会
2014/09/12 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
同学会邀请函模板
2015/01/30 职场文书
保留意见审计报告
2015/06/05 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang