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 相关文章推荐
在PHP3中实现SESSION的功能(一)
Oct 09 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
PHP中fwrite与file_put_contents性能测试代码
Aug 02 PHP
php实现根据url自动生成缩略图的方法
Sep 23 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
Jan 20 PHP
PHP+MySQL插入操作实例
Jan 21 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
Jul 08 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
May 13 PHP
php简单的上传类分享
May 15 PHP
php微信开发自定义菜单
Aug 27 PHP
PHP实现阿里大鱼短信验证的实例代码
Jul 10 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 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
DedeCms模板安装/制作概述
2007/03/11 PHP
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
配置php网页显示各种语法错误
2013/09/23 PHP
求得div 下 img的src地址的js代码
2007/02/28 Javascript
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
详解使用JS如何制作简单的ASCII图与单极图
2017/03/31 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
一百行python代码将图片转成字符画
2021/02/19 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
PyTorch中torch.tensor与torch.Tensor的区别详解
2020/05/18 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
师范毕业生个人求职信
2013/12/09 职场文书
党建示范点实施方案
2014/03/12 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
晨会主持词
2014/03/17 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
领导班子整改方案
2014/10/25 职场文书
初三语文教学反思
2016/03/03 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书