php教程

超轻量级php框架startmvc

PHP+Mysql基于事务处理实现转账功能的方法

更新时间:2020-03-04 22:19:47 作者:startmvc
本文实例讲述了PHP+Mysql基于事务处理实现转账功能的方法。分享给大家供大家参考。具体如

本文实例讲述了PHP+Mysql基于事务处理实现转账功能的方法。分享给大家供大家参考。具体如下:


<?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();
?>

数据库SQL语句如下:


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');

希望本文所述对大家的php程序设计有所帮助。

PHP Mysql 事务处理 转账功能