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 函数使用方法与函数定义方法
May 09 PHP
coreseek 搜索英文的问题详解
Jun 08 PHP
php弹出对话框实现重定向代码
Jan 23 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
Nov 12 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
Yii使用smsto短信接口的函数demo示例
Jul 13 PHP
Yii视图操作之自定义分页实现方法
Jul 14 PHP
PHP中Socket连接及读写数据超时问题分析
Jul 19 PHP
Ajax实现对静态页面的文章访问统计功能示例
Oct 10 PHP
php封装json通信接口详解及实例
Mar 07 PHP
php 猴子摘桃的算法
Jun 20 PHP
php7函数,声明,返回值等新特性介绍
May 25 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的Yii框架中cookie和session功能的相关操作
2016/03/17 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
php事务回滚简单实现方法示例
2017/03/28 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
JavaScript 私有成员分析
2009/01/13 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
2017/03/30 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
详解Python中expandtabs()方法的使用
2015/05/18 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
python的flask框架难学吗
2020/07/31 Python
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
深深扎根运动世界的生活品牌:Tillys
2017/10/30 全球购物
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
俄罗斯三星品牌商店:GalaxyStore
2020/11/04 全球购物
Weblogc domain问题
2014/01/27 面试题
小学课外阅读总结
2014/07/09 职场文书
授权委托书
2014/07/31 职场文书
困难补助申请报告
2015/05/19 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS