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的计数器程序
Oct 09 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
Jul 31 PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 PHP
thinkphp实现面包屑导航(当前位置)例子分享
May 10 PHP
PHP中多维数组的foreach遍历示例
Jun 13 PHP
wamp安装后自定义配置的方法
Aug 23 PHP
php实现RSA加密类实例
Mar 26 PHP
PHP中使用socket方式GET、POST数据实例
Apr 02 PHP
php制作简单模版引擎
Apr 07 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
PHP开发APP端微信支付功能
Feb 17 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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
多文件上载系统完整版
2006/10/09 PHP
在PHP3中实现SESSION的功能(一)
2006/10/09 PHP
解决phpmyadmin中文乱码问题。。。
2007/01/18 PHP
ThinkPHP标签制作教程
2014/07/10 PHP
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
JavaScript函数详解
2014/11/17 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
2015/07/08 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
python挖矿算力测试程序详解
2019/07/03 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
简单了解python元组tuple相关原理
2019/12/02 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
django-csrf使用和禁用方式
2020/03/13 Python
python程序输出无内容的解决方式
2020/04/09 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
python ssh 执行shell命令的示例
2020/09/29 Python
python爬取youtube视频的示例代码
2021/03/03 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
标准自荐信范文
2014/01/29 职场文书
2014年药店工作总结
2014/11/20 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
忠诚与背叛观后感
2015/06/04 职场文书
单位接收证明格式
2015/06/18 职场文书
班主任寄语2016
2015/12/04 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
2016年小学端午节活动总结
2016/04/01 职场文书