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

作者Veris 文章分类 分类:PHP 文章评论 0条评论 阅读次数 已被围观 2442

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

<?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
标签: 事务控制

发表评论: