PDO 的错误处理
PDO 全称 PHP Data Object
------------------ 错误处理 -------------------------
php 的 mysql 扩展对于 mysql 执行中的错误,并不报错显示在页面上。默认是“静默模式”。如果要显示错误到页面上,需要使用函数 mysql_error()
if( !mysql_query("select * from ") ){
echo mysql_error();
}
PDO 类对错误的处理默认也是“静默模式”。要输出错误信息,也需要手动输出。
$pdo->errorCode() //获得错误的编码
$pdo->errorInfo() //错误信息集合,包含三个元素的索引数组
PDO 支持三种错误处理模式:
静默模式,警告模式,异常模式
静默模式是默认的,需要修改的话,通过设置 PDO 对象的属性完成。
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING)
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)
警告模式:
警告模式也不是什么特别的东西哦,错误发生时会报一个警告,就只是一个警告,默认情况下,php对警告的处理是输出页面,可以自己定义处理函数。
异常模式:
异常处理分成三步:抛出异常,监听异常,捕获异常。
其实异常就是错误。抛出的错误就是异常。错误处理是:触发,处理。这里的的触发就是异常处理的“抛出”。
抛出:throw
监听:try
捕获:catch
异常的工作原理是这样的,把一些信息放到一个类的对象里面,这就是异常处理的原理。这个类叫异常类。这些信息叫异常信息。这没有什么特别的。这个异常类是 Exception .
一般的异常处理:
try{
$age = 28;
if( $age > 26 ){
throw new Exception("年龄过大");
}
}catch( Exception $e ){
echo $e->getMessage();
}
throw 会抛出一个异常对象,这个对象是异常类的对象,所以写为 new Exception 。
try 会监听写在它里面的异常。catch 会捕获它的参数对应的异常。这里 catch 的参数是 Exception $e ,这种写法表示这个参数是一个对象,而且只能是 Exception 类的对象。这是 php 语法里面对参数的限制。这个异常类可以是 Exception 或者 它的子类。如果是它的子类,那么 throw new 的类也应该是 Exception 类的子类(我是这么想的,未测试)。
PDO 的异常处理:
try{
$pdo->query("set names "); //不需要抛出异常,可能是在query函数中抛出的
echo '错误了'; //这句不会输出,抛出异常后程序挂起,必须处理异常,处理异常后这句也不执行。
}catch( PDOException $e ){ //PDOException类是 Exception类的子类的子类
echo $e->getMessage();
}
其实,异常处理就是用面向对象的语法来处理错误。用一般的面向过程的方法也是可以,只是面向对象的语法比较高级。所以,错误处理方式分成两种:标准错误处理,异常错误处理。
PDO 的错误处理的更多相关文章
- PHP PDO的错误处理模式
PDO默认的错误处理方式是返回一个数组格式的错误代码.如果想要判断SQL有没有出错时,就需要写一组代码来检测这个返回的数组.觉得这样有些麻烦.还好PDO还提供了另外两种处理方式,只要根据需要设置一下就 ...
- pdo mysql错误:Cannot execute queries while other unbuffered queries are active
运行环境:PHP 5.5.30-x64,MYSQL 5.6.27 错误代码:Cannot execute queries while other unbuffered queries are act ...
- 跟着百度学PHP[14]-PDO的错误处理模式&PDO执行SQL
我们在使用PDO去执行sql语句的时候并不会报错.如下案例所示: <?php try { //$pdo = new pdo("mysql:host=主机;port=端口;dbname= ...
- 学习PDO中的错误与错误处理模式
在 PDO 的学习过程中,我们经常会在使用事务的时候加上 try...catch 来进行事务的回滚操作,但是大家有没有注意到默认情况下 PDO 是如何处理错误语句导致的数据库操作失败问题呢?今天,我们 ...
- 前端学PHP之PDO基础操作
× 目录 [1]创建PDO [2]使用PDO [3]事务处理 前面的话 PDO(php data object)扩展类库为php访问数据库定义了轻量级的.一致性的接口,它提供了一个数据库访问抽象层,这 ...
- php大力力 [050节] 兄弟连高洛峰 PHP教程 2014年[数据库、PDO教程]
php大力力 [050节] 兄弟连高洛峰 PHP教程 2014年[数据库.PDO教程] 第14章 数据库252.[2014]兄弟连高洛峰 PHP教程14.1.1 复习数据库[已发布,点击下载]253. ...
- PDO预处理
方法:bool PDOStatement::execute ([ array $input_parameters ] ) 1.PDOStatement::execute不使用参数 01)单个绑定值(P ...
- PHP5中PDO的简单使用
PHP5中PDO的简单使用 标签: php数据库mysql扩展extensionexception 2012-05-06 10:27 27753人阅读 评论(0) 收藏 举报 分类: PHP(6) ...
- php错误以及常用笔记
//语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */ 常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH 变量名建 ...
随机推荐
- Delphi XE2 之 FireMonkey 入门(17) - 特效
刚打开 XE2 时, 就从 Tool Palette 窗口的 Effects 组中发现洋洋洒洒的六十多个特效... 每个特效分别对应一个类, 分别来自 FMX.Effects 和 FMX.Filter ...
- debian 配置静态ip
1. 查看虚拟机上本机ipcmd→ipconfig 2. 配置网卡2.1 备份原有配置文件配置文件cp /etc/network/interfaces /etc/network/interfacesb ...
- 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_04 数据结构_1_数据结构_栈
2.1 数据结构有什么用? 当你用着java里面的容器类很爽的时候,你有没有想过,怎么ArrayList就像一个无限扩充的数组,也好像链表之类 的.好用吗?好用,这就是数据结构的用处,只不过你在不知不 ...
- js中parseInt()与parseFloat(),Number(),Boolean(),String()转换
js将字符串转数值的方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把 ...
- 16/7/8_PHP-设置cookie会话控制(session与cookie)
设置cookie PHP设置Cookie最常用的方法就是使用setcookie函数,setcookie具有7个可选参数,我们常用到的为前5个: name( Cookie名)可以通过$_COOKIE[' ...
- DEDECMS首页,列表页调用自定义图片字段,只显示图片地址
第一步:将自定义字段“图片”类型改为“图片(仅地址)”类型. 第二部:在{dede:arclist row='1' addfields='stu' titlelen='24' orderby='pub ...
- 在Window平台是模拟Linux的Shell环境
在Linux平台模拟Linux的shell环境,可以通过一个软件实现:Cygwin(点击进入官网下载好即可),如下图(选择对应的版本进行下载): 安装: 1. 双击运行下载的安装包(选择从网络安装), ...
- VirtualStringTree常用类和属性
重要的类:TBaseVirtualTree = class(TCustomControl)TCustomVirtualStringTree = class(TBaseVirtualTree)TVirt ...
- VS2015配置OpenCV
第一步:下载对应版本的VS2015和OpenCV3.4.1---->链接: https://pan.baidu.com/s/1YL_TlLi3k0SehsDY2DJ8nw 提 取码: 6g27 ...
- ionic -v2版本项目结构
myApp │ config.xml //项目配置文件,包名.名称.minSdkVersion等都在此处配置 │ ionic.config.json │ package.json //项目依 ...