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 相关文章推荐
关于Appserv无法打开localhost问题的解决方法
Oct 16 PHP
PHP项目开发中最常用的自定义函数整理
Dec 02 PHP
PHP安全性漫谈
Jun 28 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
PHP使用JSON和将json还原成数组
Feb 12 PHP
php数组转成json格式的方法
Mar 09 PHP
PHP处理会话函数大总结
Aug 05 PHP
PHP使用PHPexcel导入导出数据的方法
Nov 14 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 PHP
PHP使用反射机制实现查找类和方法的所在位置
Apr 22 PHP
用PHP的反射实现委托模式的讲解
Mar 22 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
May 15 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
CodeIgniter安全相关设置汇总
2014/07/03 PHP
php实现生成验证码实例分享
2016/04/10 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
jquery入门—编写一个导航条(可伸缩)
2013/01/07 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
js通过循环多张图片实现动画效果
2019/12/19 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
用python爬取历史天气数据的方法示例
2019/12/30 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
python实现图片转字符画的完整代码
2021/02/21 Python
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
人力资源专员自我评价怎么写
2013/09/19 职场文书
绘画设计学生的个人自我评价
2013/09/20 职场文书
五一服装活动方案
2014/01/11 职场文书
销售经理助理岗位职责
2015/04/13 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python
MySQL分区以及建索引的方法总结
2022/04/13 MySQL