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 相关文章推荐
10条PHP编程习惯助你找工作
Sep 29 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
Jul 03 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
Jul 29 PHP
配置php.ini实现PHP文件上传功能
Nov 27 PHP
XHProf报告字段含义的解析
May 17 PHP
Yii2.0预定义的别名功能小结
Jul 04 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
Nov 05 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
Jan 19 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
PHP实现的折半查找算法示例
Dec 19 PHP
启用OPCache提高PHP程序性能的方法
Mar 21 PHP
使用Git实现Laravel项目的自动化部署
Nov 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程序员必须清楚的问题汇总
2014/12/18 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
简单的JS多重继承示例
2008/03/13 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
Python调用JavaScript代码的方法
2020/10/27 Python
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
JBL美国官方商店:扬声器、耳机等
2019/12/01 全球购物
最新计算机专业自荐信
2013/10/16 职场文书
英文求职信结束语大全
2013/10/26 职场文书
电钳专业个人求职信
2014/01/04 职场文书
顶岗实习接收函
2014/01/09 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
优秀团队获奖感言
2014/02/19 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
培训科主任岗位职责
2014/08/08 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
2019假期福利管理制度!
2019/07/15 职场文书