pdo连接mysql_php PDO连接mysql

如今你已经通过PDO建立了连接。在部署查询之前你必须搞明确PDO是如何管理事务的。

假设你曾经从未遇到过事务处理,(如今简介一下:)它们提供了4个基本的特性:原子性,一致性,独立性和持久性(Atomicity, Consistency, Isolation and Durability,ACID)通俗一点讲,一个事务中全部的工作在提交时。即使它是分阶段运行的。也要保证安全地应用于数据库,不被其它的连接干扰。事务工作也能够在请求错误发生时轻松地自己主动取消。

事务的典型运用就是通过把批量的改变“保存起来”然后马上运行。这样就会有彻底地提高更新效率的优点。换句话说。事务能够使你的脚本更高速同一时候可能更健壮(要实现这个优点你仍然须要正确的使用它们)。

不幸运的是,并非每一个数据库都支持事务,因此PDO须要在建立连接时执行在被觉得是“自己主动提交”的模式下。自己主动提交模式意味着你执行的每一个查询都有它自己隐含的事务处理。不管数据库支持事务还是因数据库不支持而不存在事务。假设你须要一个事务,你必须使用 PDO->beginTransaction() 方法创建一个。

假设底层驱动不支持事务处理。一个PDOException就会被抛出(与你的异常处理设置无关。由于这总是一个严重的错误状态)。

在一个事物中,你能够使用

PDO->commit() 或 PDO->rollBack() 结束它,这取决于事务中代码执行是否成功。

当脚本结束时或一个连接要关闭时,假设你另一个未处理完的事务,PDO将会自己主动将其回滚。这是对于脚本意外终止的情况来说是一个安全的方案——假设你没有明白地提交事务。它将会假设发生了一些错误,为了你数据的安全,所以就运行回滚了。

PDOException

PDO 提供了3中不同的错误处理策略。

1. PDO::ERRMODE_SILENT

这是默认使用的模式。

PDO会在statement和database对象上设定简单的错误代号,你能够使用PDO->errorCode() 和 PDO->errorInfo() 方法检查错误;假设错误是在对statement对象进行调用时导致的。你就能够在那个对象上使用 PDOStatement->errorCode() 或 PDOStatement->errorInfo() 方法取得错误信息。

而假设错误是在对database对象调用时导致的,你就应该在这个database对象上调用那两个方法。

2. PDO::ERRMODE_WARNING

作为设置错误代号的附加,PDO将会发出一个传统的E_WARNING信息。这样的设置在除错和调试时是非常实用的,假设你仅仅是想看看发生了什么问题而不想中断程序的流程的话。

3. PDO::ERRMODE_EXCEPTION

作为设置错误代号的附件,PDO会抛出一个PDOException异常并设置它的属性来反映错误代号和错误信息。

这中设置在除错时也是非常实用的,由于他会有效的“放大(blow up)”脚本中的出错点,非常高速的指向一个你代码中可能出错区域。(记住:假设异常导致脚本中断,事务处理回自己主动回滚。)

异常模式也是很实用的。由于你可以使用比曾经那种使用传统的PHP风格的错误处理结构更清晰的结构处理错误。比使用安静模式使用更少的代码及嵌套,也可以更加明白地检查每一个数据库訪问的返回值。

关于PHP中异常的很多其它信息请看Exceptions章节

PDO 使用基于SQL-92 SQLSTATE 的错误代号字符串;特定的PDO驱动应当将自己本身的代号相应到适当的SQLSTATE代号上。

PDO->errorCode() 方法仅仅返回单一的SQLSTATE代号。

假设你须要关于一个错误的更加有针对性的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值