php+mysqli事务控制实现银行转账实例

5年以前  |  阅读数:525 次  |  编程语言:PHP 

本文实例讲述了php+mysqli事务控制实现银行转账的方法。分享给大家供大家参考。具体分析如下:

事务控制,也就是说所有的语句执行成功后,才会提交。否则,如果前面有语句执行成功,而后面没有执行成功,则回滚到执行之前的状态。通过银行转账的案例来说明这个应用。一个账号转了钱出去,另一个账号必须有钱转入,这样才算成功。

代码如下:


    <?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程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例