PHP+Mysql基于事务处理实现转账功能的方法
author:一佰互联 2019-04-27   click:177

本文实例讲述了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程序设计有所帮助。