百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> PHP使用pdo实现事务处置操纵示例
分享文章到:

PHP使用pdo实现事务处置操纵示例

发布时间:05/20 来源:未知 浏览: 关键词:

本文实例讲述了PHP使用pdo实现事务处置操纵。分享给大家供大家参考,详细如下:

使用事务的好处:

举个例子:银行会员A向会员B转账100元,这个操纵被分为两个步骤:

(1)A的账户余额被扣去100。

(2)B的账户余额增添100。

如果不使用事务的话,假设(1)施行成功了,而(2)失败了,那会员B没有收到应收款项,而会员A就白白受了亏损。

使用事务之后,不管(1)或者(2)哪一步失败,都可以回滚,即双方的账户余额恢复到此前的状态。

不是所有的数据库都供给了对事务的支撑,如mysql中的 Myisam 引擎不支撑事务,但新版本默许使用的 innoDB 引擎供给了对事务的支撑。(RDBMS大部分支撑事务,NoSQL数据库一般不支撑事务)

下面来看详细的代码:

setAttribute(PDO::ATTR_AUTOCOMMIT, 0);
$cash = 100;
try {
  $dbh->beginTransaction();
  //会员A账户扣除100
  $sqlcmd    = "update transaction set useraccount=useraccount - {$cash} where username ='A'";
  $affected_rows = $dbh->exec($sqlcmd);
  if ($affected_rows > 0) {
    echo "会员A账户扣除成功" . "
"; } else { throw new Exception("会员A账户扣除失败"); } //会员B账户增添100 $affected_rows = $dbh->exec("update transaction set useraccount=useraccount+{$cash} where username ='B'"); if ($affected_rows > 0) { echo "会员B账户增添成功" . "
"; } else { throw new Exception("会员B账户增添失败"); } echo "转账成功"; //若前面两个步骤都成功,则提交事务 $dbh->commit(); } catch (PDOException $e) //若前面两个步骤中出现了异常,则回滚 { echo $e->getMessage(); $dbh->rollback(); } //对事物的使用完毕之后,从新开启主动提交 $dbh->setAttribute(PDO::ATTR_AUTOCOMMIT, 1); ?>

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有154人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板