首页 > 开发 > PHP > 正文

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

2024-05-04 23:37:29
字体:
来源:转载
供稿:网友

这篇文章主要介绍了PHP+Mysql基于事务处理实现转账功能的方法,实例分析了mysql事务处理的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

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

 

 
  1. <?php 
  2. header("Content-Type:text/html;charset=utf-8"); 
  3. $mysqli=new mysqli("localhost","root","","test"); 
  4. if(mysqli_connect_errno()) 
  5. printf("连接失败:%s<br>",mysqli_connect_error()); 
  6. exit(); 
  7. $success=TRUE; 
  8. $price=8000; 
  9. $result=$mysqli->query("select cash from account where name='userA'"); 
  10. while($row=$result->fetch_assoc()) 
  11. $value=$row["cash"]; 
  12. echo $value
  13. $mysqli->autocommit(0); 
  14. if($value>=$price){ 
  15. $result=$mysqli->query("UPDATE account set cash=cash-$price where name='userA'"); 
  16. }else { 
  17. echo '余额不足'
  18. exit(); 
  19. if(!$result or $mysqli->affected_rows!=1) 
  20. $success=FALSE; 
  21. $result=$mysqli->query("UPDATE account set cash=cash+$price where name='userB'"); 
  22. if(!result or $mysqli->affected_rows!=1){ 
  23. $success=FALSE; 
  24. if($success
  25. $mysqli->commit(); 
  26. echo '转账成功!'
  27. }else 
  28. $mysqli->rollback(); 
  29. echo "转账失败!"
  30. $mysqli->autocommit(1); 
  31. $query="select cash from account where name=?"
  32. $stmt=$mysqli->prepare($query); 
  33. $stmt->bind_param('s',$name); 
  34. $name='userA'
  35. $stmt->execute(); 
  36. $stmt->store_result(); 
  37. $stmt->bind_result($cash); 
  38. while($stmt->fetch()) 
  39. echo "用户userA的值为:".$cash
  40. $mysqli->close(); 
  41. ?> 

数据库SQL语句如下:

 

 
  1. create table account{ 
  2. userID smallint unsigned not null auto_increment, 
  3. name varchar(45) not null, 
  4. cash decimal(9,2) not null, 
  5. primary key(userID) 
  6. )type=InnoDB; 
  7. insert into account(name,cash) values ('userA','2000'); 
  8. insert into account(name,cash) values ('userB','10000'); 

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表