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遍历文件夹与子目录的函数代码
Sep 26 PHP
基于PHP对XML的操作详解
Jun 07 PHP
ThinkPHP中ajax使用实例教程
Aug 22 PHP
PHP获取数组最大值下标的方法
May 12 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
Feb 23 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
Jun 13 PHP
微信支付扫码支付php版
Jul 22 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
Feb 08 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 PHP
Laravel validate error处理,ajax,json示例
Oct 25 PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 PHP
PHP设计模式之命令模式示例详解
Dec 20 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下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
dojo 之基础篇(三)之向服务器发送数据
2007/03/24 Javascript
ASP中进行HTML数据及JS数据编码函数
2009/11/11 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
浅谈JS闭包中的循环绑定处理程序
2014/11/09 Javascript
PHP实现的各种中文编码转换类分享
2015/01/23 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
Node.js用readline模块实现输入输出
2016/12/16 Javascript
Angular工具方法学习
2016/12/26 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
python+django+sql学生信息管理后台开发
2018/01/11 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
python 同时运行多个程序的实例
2019/01/07 Python
python实现图片彩色转化为素描
2019/01/15 Python
python使用PyQt5的简单方法
2019/02/27 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
移动web模拟客户端实现多方框输入密码效果【附代码】
2016/03/25 HTML / CSS
查询优化的一般准则有哪些
2015/03/08 面试题
幼儿园课题实施方案
2014/05/14 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
优秀大学生自荐信
2015/03/26 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
Java设计模式中的命令模式
2022/04/28 Java/Android