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简单系统数据添加以及数据删除模块源文件下载
Jun 07 PHP
PHP 设置MySQL连接字符集的方法
Jan 02 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
php网站判断用户是否是手机访问的方法
Nov 01 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
Yii2.0高级框架数据库增删改查的一些操作
Nov 16 PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 PHP
PHP查询分页的实现代码
Jun 09 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
php实现统计IP数及在线人数的示例代码
Jul 22 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
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
php继承的一个应用
2011/09/06 PHP
PHP5中实现多态的两种方法实例分享
2014/04/21 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
JS实现点击下载的小例子
2013/07/10 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
Angularjs制作简单的路由功能demo
2015/04/14 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
svg动画之动态描边效果
2017/02/22 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
vue-router中scrollBehavior的巧妙用法
2018/07/09 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
Vue SPA 首屏优化方案
2021/02/26 Vue.js
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python实现simhash算法实例
2014/04/25 Python
Python处理文本文件中控制字符的方法
2017/02/07 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
DOM和JQuery对象有什么区别
2016/11/11 面试题
2014升学宴答谢词
2014/01/26 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
Python内置数据结构列表与元组示例详解
2021/08/04 Python
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python