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 相关文章推荐
header()函数使用说明
Nov 23 PHP
一个PHP日历程序
Dec 06 PHP
php中显示数组与对象的实现代码
Apr 18 PHP
利用PHP扩展vld查看PHP opcode操作步骤
Mar 04 PHP
使用Apache的htaccess防止图片被盗链的解决方法
Apr 27 PHP
php实现有趣的人品测试程序实例
Jun 08 PHP
php简单解析mysqli查询结果的方法(2种方法)
Jun 29 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
Oct 10 PHP
浅谈ThinkPHP中initialize和construct的区别
Apr 01 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
Aug 02 PHP
php语言注释,单行注释和多行注释
Jan 21 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 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
php为什么选mysql作为数据库? Mysql 创建用户方法
2007/07/02 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
PHP 数组基本操作方法详解
2016/06/17 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
总结一些PHP中好用但又容易忽略的小知识
2017/06/02 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
2019/09/27 PHP
微信小程序发送订阅消息的方法(php 为例)
2019/10/30 PHP
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
2014/08/22 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
2017/04/25 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
label+input实现按钮开关切换效果的实例
2017/08/16 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
详解jQuery中的prop()使用方法
2020/01/05 jQuery
JavaScript实现联动菜单特效
2020/01/07 Javascript
Python中的引用和拷贝浅析
2014/11/22 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
python获取引用对象的个数方式
2019/12/20 Python
pyspark给dataframe增加新的一列的实现示例
2020/04/24 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
服务理念口号
2014/06/11 职场文书
女生节标语
2014/06/26 职场文书
文明好少年事迹材料
2014/08/19 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
《槐乡的孩子》教学反思
2016/02/20 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
Vue详细的入门笔记
2021/05/10 Vue.js
关于EntityWrapper的in用法
2022/03/22 Java/Android
Android开发手册TextInputLayout样式使用示例
2022/06/10 Java/Android