本文实例讲述了php实现的PDO异常处理操作。...分享给大家供大家参考,具体如下: 异常处理: PHP:默认为直接报错 MYSQL:默认为静默模式,错就错,不报错 PDO:默认为静默模式,错就错,不报错 以前,当PHP碰到错误的时候,会直接报错,错误处理会变得相当麻烦...后来,当错误发生之后,会将错误信息不再直接输出,放到一个类的对象里(PDOException) 要使用PDO异常处理,必须满足两个条件 1、需要将错误处理模式变成异常模式 $pdo- setAttribute...echo '出现异常:<br/ '; echo '错误出现的位置:' ....一旦出现业务逻辑错误,异常是没有办法捕捉(异常只捕捉语法错误),一般认为的去通过判断语句的执行(结果),主动抛出异常,从而结束错误程序的运行。
统一抽象接口,更类似于mysqli 二、PDO常用函数 PDO中包含三个预定义类:PDO、PDOStatement和PDOException (1)PDO类中的常用方法有: beginTransaction..."); //设置异常可捕获 $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); $db->exec("set names...;"); //插入 $insert->execute(Array("HeChengLei")); //异常语句 //$insert->execute(Array("ZhangJun","1983...在使用beginTransaction()后,如果事务中有异常出现或者没有提交事务即关闭数据库连接和结束脚本,事务会自动回滚,即终止前的所有语句都不会生效。这体现了事务的原子性。...六、PDO的效率问题 PDO比mysql、mysqli的连接更为稳定,但在效率上却不一定比直连更好。而且在实际应用中,数据库迁移的情况不是很多,PDO更无法保证一次编写,到处运行。
问题描述 我自己以swoole扩展为基础,封装了一个异步任务服务器框架,数据库操作使用pdo扩展,但是在插入数据的时候,出现了异常情况,具体状况如下: MyISAM 表引擎的insert正常插入,没有问题...然后监控日志,发现insert语句发送到mysql端了 查看innodb engine状态 怀疑是不是死锁了,查看innodb 的状态 show engine innodb status; 没有发现异常...直接写了个简单的mysql pdo 连接数据库,并且插入数据到innodb表里面,结果没有任何问题,成功了,然后我就想到pdo里面有个参数PDO::ATTR_AUTOCOMMIT,是不是他在作怪?...使用getAttribute(PDO::ATTR_AUTOCOMMIT)) 获取他的值,打印,发现是1,证明是自动提交事务的 然后在我封装的框架里面,我打印了他的值,发现是0,问题找到 那么,在插入的时候...PDO::ATTR_AUTOCOMMIT为1 ,在启动的swoole-httpserer里面是0,我没有继续深入。
PDO::query PDO::query — 执行 SQL 语句,返回PDOStatement对象,可以理解为结果集(PHP 5 = 5.1.0, PECL pdo = 0.2.0) 说明 语法...public PDOStatement PDO::query ( string $statement ) public PDOStatement PDO::query ( string $statement..., int $PDO::FETCH_COLUMN , int $colno ) public PDOStatement PDO::query ( string $statement , int $PDO..., int $PDO::FETCH_INTO , object $object ) PDO::query() 在一个单独的函数中调用并执行 SQL 语句, 返回结果集 (如果有),语句作为一个PDOStatement...返回值 如果成功,PDO::query()返回PDOStatement对象,如果失败返回 FALSE 。 实例 PDO::query实例 遍历输出结果集: <?
PDO::lastInsertId PDO::lastInsertId — 返回最后插入行的ID或序列值(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 string...比如,PDO_PGSQL() 要求为 name 参数指定序列对象的名称。 注意:在不同的 PDO 驱动之间,此方法可能不会返回一个有意义或一致的结果,因为底层数据库可能不支持自增字段或序列的概念。...返回值 如果没有为参数 name 指定序列名称,PDO::lastInsertId() 则返回一个表示最后插入数据库那一行的行ID的字符串。...如果为参数 name 指定了序列名称,PDO::lastInsertId() 则返回一个表示从指定序列对象取回最后的值的字符串。...如果当前 PDO 驱动不支持此功能,则 PDO::lastInsertId() 触发一个 IM001 SQLSTATE 。
PDO::errorInfo PDO::errorCode — 返回最后一次操作数据库的错误信息(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 public array...PDO::errorInfo ( void ) 返回值 返回一个数组,该数组包含了最后一次操作数据库的错误信息描述。...实例 显示errorInfo()中关于PDO_ODBC连接到DB2数据库的错误信息 <?...以上例程会输出: PDO::errorInfo(): Array ( [0] = HY000 [1] = 1 [2] = near "bogus": syntax error ) 总结
PDO::getAttribute PDO::getAttribute — 取回一个数据库连接的属性(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 mixed PDO...参数说明: attribute : PDO::ATTR_* 常量中的一个。...下列为应用到数据库连接中的常量: _PDO::ATTRAUTOCOMMIT _PDO::ATTRCASE _PDO::ATTR_CLIENTVERSION _PDO::ATTR_CONNECTIONSTATUS..._PDO::ATTR_DRIVERNAME _PDO::ATTRERRMODE _PDO::ATTR_ORACLENULLS _PDO::ATTRPERSISTENT _PDO::ATTRPREFETCH..._PDO::ATTR_SERVERINFO _PDO::ATTR_SERVERVERSION _PDO::ATTRTIMEOUT 返回值 成功调用则返回请求的 PDO 属性值。
PDO::getAvailableDrivers PDO::getAvailableDrivers — 返回一个可用驱动的数组(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明...语法 static array PDO::getAvailableDrivers ( void ) array pdo_drivers ( void ) 此函数(方法)返回所有当前可用在PDO::_construct...()的参数 DSN 中的 PDO 驱动。...返回值 PDO::getAvailableDrivers()返回一个 包含可用 PDO 驱动名字的数组。如果没有可用的驱动,则返回一个空数组。...实例 一个 PDO::getAvailableDrivers() 的例子 <?php print_r(PDO::getAvailableDrivers()); ?
PDO::prepare PDO::prepare — 准备要执行的SQL语句并返回一个 PDOStatement 对象(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法...public PDOStatement PDO::prepare ( string $statement [, array $driver_options = array() ] ) 为PDOStatement...driver_options 此数组包含一个或多个key= value 对来设置 PDOStatement 对象的属性, 最常使用到是将PDO::ATTR_CURSOR值设置为PDO::CURSOR_SCROLL...返回值 如果成功,PDO::prepare()返回PDOStatement对象,如果失败返回 FALSE 或抛出异常 PDOException 。...::ATTR_CURSOR = PDO::CURSOR_FWDONLY)); $sth- execute(array(':calories' = 150, ':colour' = 'red'));
$pdo=new PDO($dsn,$username,$password); var_dump($pdo); exec() 执行一条 SQL 语句,并返回其受影响的行数。...EOF; $res=$pdo->exec($query); // 最后插入记录的 ID 号 $pdo->lastInsertId(); var_dump($res); // 获取错误信息 $...pdo->errorCode(); $pdo->errorInfo(); query() 查询,执行一条 SQL 语句,返回一个 PDOStatement 对象 查询 插入 $sql='...false setAttribute() getAttribute() 设置,得到数据库连接属性 $pdo->getAttribute($attribute); $pdo->setAttribute...; $stmt=$pdo->prepare($sql); $stmt->execute([':username'=>$usernmae]); // ?
PDO::rollBack PDO::rollBack — 回滚一个事务(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 bool PDO::rollBack ( void...) 回滚由PDO::beginTransaction()发起的当前事务。...如果没有事务激活,将抛出一个 PDOException 异常。 如果数据库被设置成自动提交模式,此函数(方法)在回滚事务之后将恢复自动提交模式。
PDO的概述 PDO(PHP Data Object)是有MySql官方封装的、基于面向对象编程思想的、使用C语言开发的数据库抽象层。...执行SQL语句 PDO提供了3中执行SQL语句的方法,分别是exec()方法、query()方法和预处理语句。...exec()方法 exec()方法可以执行一条语句,并返回受影响的行数: int PDO::exec(sql); exec()方法通常应用于INSERT、DELETE、UPDATE等语句 query()...语句 query()语句常用于SELECT语句,他的返回值是PDOStatement的实例,是PDO的结果集 PDOStatement PDO::query(sql) 预处理语句 PDO提供对预处理语句的支持
PDO::quote PDO::quote — 为SQL语句中的字符串添加引号。...(PHP 5 = 5.1.0, PECL pdo = 0.2.1) 说明 语法 public string PDO::quote ( string $string [, int $parameter_type...= PDO::PARAM_STR ] ) PDO::quote()为SQL语句中的字符串添加引号或者转义特殊字符串。...php $conn = new PDO('sqlite:/home/lynn/music.sql3'); /* Simple string */ $string = 'Nice'; print "Unquoted...php $conn = new PDO('sqlite:/home/lynn/music.sql3'); /* Dangerous string */ $string = 'Naughty \' string
PDO::commit PDO::commit提交一个事务(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 ```bool PDO::commit ( void ) 提交一个事务...,数据库连接返回到自动提交模式直到下次调用 PDO::beginTransaction() 开始一个新的事务为止。
PDO::setAttribute PDO::setAttribute — 设置属性(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 bool PDO::setAttribute..._PDO::ATTRCASE :强制列名为指定的大小写。 _PDO::CASELOWER :强制列名小写。 _PDO::CASENATURAL :保留数据库驱动返回的列名。..._PDO::CASEUPPER :强制列名大写。 _PDO::ATTRERRMODE :错误报告。 _PDO::ERRMODESILENT : 仅设置错误代码。..._PDO::ERRMODEWARNING : 引发 _EWARNING 错误 _PDO::ERRMODEEXCEPTION : 抛出 exceptions 异常。..._PDO::ATTR_STATEMENTCLASS : 设置从PDOStatement派生的用户提供的语句类。 不能用于持久的PDO实例。
PDO::errorCode PDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 mixed...PDO::errorCode ( void ) 返回值 返回一个 SQLSTATE,一个由5个字母或数字组成的在 ANSI SQL 标准中定义的标识符。...以上例程会输出: PDO::errorCode(): 42S02 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对ZaLou.Cn的支持。
PDO::beginTransaction PDO::beginTransaction 启动一个事务(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 bool PDO:...自动提交模式被关闭的同时,通过 PDO 对象实例对数据库做出的更改直到调用PDO::commit()结束事务才被提交。...调用PDO::rollBack()将回滚对数据库做出的更改并将数据库连接返回到自动提交模式。
PDO::_construct PDO::_construct — 创建一个表示数据库连接的 PDO 实例(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明 语法 PDO::_...string $dsn [, string $username [, string $password [, array $driver_options ]]] ) 创建一个表示连接到请求数据库的数据库连接PDO...对于某些PDO驱动,此参数为可选项。 password : DSN字符串中的密码。对于某些PDO驱动,此参数为可选项。 driver_options : 一个具体驱动的连接选项的键= 值数组。...返回值 成功则返回一个PDO对象。 错误/异常 如果试图连接到请求的数据库失败,则PDO::__construct()抛出一个PDO异常(PDOException) 。...实例 通过调用驱动程序创建一个PDO实例 <?
PDO::inTransaction PDO::inTransaction — 检查是否在一个事务内(PHP 5 = 5.3.3, Bundled pdo_pgsql) 说明 语法 bool PDO:
PHP PDO连接 连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。 连接到 MySQL <?...注意:如果有任何连接错误,将抛出一个 PDOException 异常对象。 处理连接错误 <?...连接数据成功后,返回一个 PDO 类的实例给脚本,此连接在 PDO 对象的生存周期中保持活动。 要想关闭连接,需要销毁对象以确保所有剩余到它的引用都被删除,可以赋一个 NULL 值给对象变量。...php $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array( PDO::ATTR_PERSISTENT =...注意:如果想使用持久连接,必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT 。
领取专属 10元无门槛券
手把手带您无忧上云