龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php Mysql事务处理(一个转账程序) - PHP

时间:2014-10-28 03:31来源:网络整理 作者:网络 点击:
分享到:
Mysql事务处理(一个转账程序) - PHP [代码片段(71行)]
<?php
     header("Content-Type:text/html;charset=utf-8");
     $mysqli=new mysqli("localhost","root","","test");
     if(mysqli_connect_errno())
     {
        printf("连接失败:%s<br>",mysqli_connect_error());
        exit();
     }

     $success=TRUE;
     $price=8000;
     $result=$mysqli->query("select cash from account where name='userA'");
     while($row=$result->fetch_assoc())
     {
        $value=$row["cash"];
        echo $value;
     }
     $mysqli->autocommit(0);
     if($value>=$price){
     $result=$mysqli->query("UPDATE account set cash=cash-$price where name='userA'");
     }else {
        echo '余额不足';
        exit();
     }
     if(!$result or $mysqli->affected_rows!=1)
     {
        $success=FALSE;
     }

     $result=$mysqli->query("UPDATE account set cash=cash+$price where name='userB'");
     if(!result or $mysqli->affected_rows!=1){
        $success=FALSE;
     }

     if($success)
     {
        $mysqli->commit();
        echo '转账成功!';
     }else
     {
        $mysqli->rollback();
        echo "转账失败!";
     }
     $mysqli->autocommit(1);
     $query="select cash from account where name=?";
     $stmt=$mysqli->prepare($query);
     $stmt->bind_param('s',$name);
     $name='userA';
     $stmt->execute();
     $stmt->store_result();
     $stmt->bind_result($cash);
     while($stmt->fetch())
     echo "用户userA的值为:".$cash;

     $mysqli->close();
?>

&&&&&&&&&&&&&&&&&&

create table account{
  userID smallint unsigned not null auto_increment,
  name varchar(45) not null,
  cash decimal(9,2) not null,
  primary key(userID)
)type=InnoDB;

insert into account(name,cash) values ('userA','2000');
insert into account(name,cash) values ('userB','10000');
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接