PHP+Mysql基于事务处理实现转账功能的方法
发布:smiling 来源: PHP粉丝网 添加日期:2021-06-09 11:05:51 浏览: 评论:0
这篇文章主要介绍了PHP+Mysql基于事务处理实现转账功能的方法,实例分析了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程序设计有所帮助。
Tags: PHP+Mysql事务处理
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)