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初学者头痛的十四个问题
Jul 12 PHP
PHP 数组教程 定义数组
Oct 23 PHP
基于递归实现的php树形菜单代码
Nov 19 PHP
CI框架给视图添加动态数据
Dec 01 PHP
Yii实现多按钮保存与提交的方法
Dec 03 PHP
PHP查询快递信息的方法
Mar 07 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
非集成环境的php运行环境(Apache配置、Mysql)搭建安装图文教程
Apr 12 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
PHPCMS2008广告模板SQL注入漏洞修复
Oct 11 PHP
PHP实现的大文件切割与合并功能示例
Apr 10 PHP
PHP实现文件上传后台处理脚本
Mar 04 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
8个必备的PHP功能实例代码
2013/10/27 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
2014/06/12 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
php 基础函数
2017/02/10 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
JavaScript 继承的实现
2009/07/09 Javascript
javascript 使td内容不换行不撑开
2012/11/29 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
浅谈Python中copy()方法的使用
2015/05/21 Python
在Python的while循环中使用else以及循环嵌套的用法
2015/10/14 Python
python web框架学习笔记
2016/05/03 Python
Python3获取拉勾网招聘信息的方法实例
2019/04/03 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
python实现马丁策略的实例详解
2021/01/15 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
简约控的天堂:The Undone
2016/12/21 全球购物
皇家道尔顿官网:Royal Doulton
2017/12/06 全球购物
一个精品风格的世界:Atterley
2019/05/01 全球购物
主办会计岗位职责
2014/03/13 职场文书
实习单位评语
2014/04/26 职场文书
骨干教师培训方案
2014/05/06 职场文书
最美孝心少年事迹材料
2014/08/15 职场文书
年会邀请函范文
2015/01/30 职场文书
安装工程师岗位职责
2015/02/13 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS