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 foreach、while性能比较
Oct 15 PHP
PHP下打开URL地址的几种方法小结
May 16 PHP
php防攻击代码升级版
Dec 29 PHP
php切割页面div内容的实现代码分享
Jul 31 PHP
PHP CodeBase:将时间显示为&quot;刚刚&quot;&quot;n分钟/小时前&quot;的方法详解
Jun 06 PHP
php实现最简单的MVC框架实例教程
Sep 08 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
PHP缓冲区用法总结
Feb 14 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
PHP+JavaScript实现无刷新上传图片
Feb 21 PHP
PHP后期静态绑定实例浅析
Dec 21 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
php创建sprite
2014/02/11 PHP
PHP中基本HTTP认证技巧分析
2015/03/16 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
JavaScript支持的最大递归调用次数分析
2014/06/24 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
详解Vue底部导航栏组件
2019/05/02 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
python实现矩阵乘法的方法
2015/06/28 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
python实现最长公共子序列
2018/05/22 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
跟单文员岗位职责
2014/01/03 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
房地产项目策划书
2014/02/05 职场文书
酒店员工培训方案
2014/06/02 职场文书
优秀大学生自荐信
2014/06/09 职场文书
2014年售票员工作总结
2014/11/19 职场文书
入党转正介绍人意见
2015/06/03 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL
图文详解matlab原始处理图像几何变换
2021/07/09 Python
Java spring定时任务详解
2021/10/05 Java/Android
php png失真的原因及解决办法
2021/10/24 PHP
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫