您的位置:首页 > 数据库

数据库的事务处理---PDO实现

2017-09-19 12:11 176 查看
事务处理用一句简单的术语称为“原子操作",即一件事情,要么全部完成,要么一个也别完成;有一种一荣俱荣,一损俱损的感觉。

最常用的就是在交易过程中,比如在网络中,甲方付费给乙方,钱确认付款,但是乙方并未确认收款,那么,甲方的账户并不会减少,乙方的账户也并不会增加。

只有当甲方确认付款,乙方确认收款,两个步骤都完成,并且不出现错误的时候,双方的账户才会改变

看代码也许更好理解

1 <?php
2     try{
3         $pdo=new PDO("mysql:host=localhost;dbname=test","root","root");
4
5         $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
6         $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);///非常重要,不要忘记关闭自动提交
7
8         $pdo->beginTransaction();//开始一个事务
9
10         //操作一
11         $num_1=$pdo->exec("delete from test_pdo where id=2");
12         if($num_1<=0){
13             throw new PDOException("action one is failed");
14         }
15
16         //操作二
17         $num_2=$pdo->exec("delete from test_pdo where id=3");
18         if($num_2<=0){
19             throw new PDOException("action two is failed");
20         }
21
22         //执行到此处,证明来两个操作都成功了,可以提交
23         $pdo->commit();
24         echo "all action is success\n";
25     } catch (PDOException $e){
26         //如果抛出异常,则证明至少有一个操作未完成,于是rollback,取消已经完成的操作
27         $pdo->rollback();
28         echo $e->getMessage();
29     }


这只是一个最简单的事务处理,如果能明白这个代码,相信你已经对事务处理有一定理解了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: