本文实例讲述了php+mysqli事务控制实现银行转账的方法。分享给大家供大家参考。具体分析如下:
事务控制,也就是说所有的语句执行成功后,才会提交。否则,如果前面有语句执行成功,而后面没有执行成功,则回滚到执行之前的状态。通过银行转账的案例来说明这个应用。一个账号转了钱出去,另一个账号必须有钱转入,这样才算成功。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?php //1、创建数据库连接对象 $mysqli = new MySQLi( "localhost" , "root" , "123456" , "liuyan" ); if ( $mysqli ->connect_error){ die ( $mysqli ->connect_error); } $mysqli ->query( "set names 'GBK'" ); $mysqli ->autocommit(false); //首先设置autocommit为false,也就是不自动提交 $sql1 = "update account set balance=balance-2 where id=1;" ; $sql2 = "update account set balance=balance+2 where id=2;" ; $res1 = $mysqli ->query( $sql1 ) or die ( $mysqli ->error); $res2 = $mysqli ->query( $sql2 ) or die ( $mysqli ->error); if (! $res1 || ! $res2 ){ echo "转账失败" ; $mysqli ->rollback(); //如果有一条不成功,则回滚 } else { $mysqli ->commit(); //两条语句都执行成功,则提交 echo "转账成功" ; } ?> |
希望本文所述对大家的php程序设计有所帮助。