zoukankan      html  css  js  c++  java
  • 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');
  • 相关阅读:
    hdu 5833 Zhu and 772002 (高斯消元)
    1203事件对象
    作用域面试题
    1130 JS高级 面向对象
    1122JS中级复习
    1120浏览器对象模型 函数分析
    1119动画和复习
    1114面试题作用域
    1113Js操作CSS样式
    1112函数封装和元素的属性
  • 原文地址:https://www.cnblogs.com/ghjbk/p/6753818.html
Copyright © 2011-2022 走看看