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的中问验证码
Nov 25 PHP
php array的学习笔记
May 16 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
Apr 08 PHP
destoon常用的安全设置概述
Jun 21 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
Oct 21 PHP
PHP实现的DES加密解密实例代码
Apr 06 PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 PHP
PHP带节点操作的无限分类实现方法详解
Nov 09 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
PHP操作Redis数据库常用方法示例
Aug 25 PHP
PHP引擎php.ini参数优化深入讲解
Mar 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
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
Thinkphp模板中使用自定义函数的方法
2012/09/23 PHP
PHP中的traits简单使用实例
2015/05/13 PHP
php如何获取文件的扩展名
2015/10/28 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
什么是json和jsonp,jQuery json实例详详细说明
2012/12/11 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
Bootstrap布局之栅格系统学习笔记
2017/05/04 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
ndm:NPM的桌面GUI应用程序
2018/10/15 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
微信小程序实用代码段(收藏版)
2019/12/17 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
Python实现Const详解
2015/01/27 Python
python虚拟环境的安装配置图文教程
2017/10/20 Python
Python实现批量压缩图片
2018/01/25 Python
python 不以科学计数法输出的方法
2018/07/16 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
使用pandas把某一列的字符值转换为数字的实例
2019/01/29 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
python switch 实现多分支选择功能
2020/12/21 Python
应届生服务员求职信
2013/10/31 职场文书
个人债务授权委托书
2014/10/17 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js