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


Posted in PHP onJuly 08, 2015

本文实例讲述了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 相关文章推荐
phpmyadmin里面导入sql语句格式的大量数据的方法
Jun 05 PHP
PHP的switch判断语句的“高级”用法详解
Oct 01 PHP
php使用ob_flush不能每隔一秒输出原理分析
Jun 02 PHP
php cookie工作原理与实例详解
Jul 18 PHP
Yii2创建表单(ActiveForm)方法详解
Jul 23 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
Oct 28 PHP
php使用file函数、fseek函数读取大文件效率对比分析
Nov 04 PHP
php利用gd库为图片添加水印
Nov 09 PHP
PHP7扩展开发教程之Hello World实现方法示例
Aug 03 PHP
Yii框架分页技术实例分析
Aug 30 PHP
php png失真的原因及解决办法
Nov 17 PHP
php将html转成wml的WAP标记语言实例
Jul 08 #PHP
php实现数组中索引关联数据转换成json对象的方法
Jul 08 #PHP
PHP使用pear自带的mail类库发邮件的方法
Jul 08 #PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
Jul 08 #PHP
PHP实现多文件上传的方法
Jul 08 #PHP
PHP实现图片自动清理的方法
Jul 08 #PHP
php-redis中的sort排序函数总结
Jul 08 #PHP
You might like
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
jquery必须知道的一些常用特效方法及使用示例(整理)
2013/06/24 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
js实现数组转换成json
2015/06/26 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招
2016/03/07 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
最全的JavaScript开发工具列表 总有一款适合你
2017/06/29 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
python实现dict版图遍历示例
2014/02/19 Python
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
Python采用Django制作简易的知乎日报API
2016/08/03 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
导致python中import错误的原因是什么
2020/07/01 Python
100%植物性、有机、即食餐:Sakara Life
2018/10/25 全球购物
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
中药专业大学生医药工作求职信
2013/10/25 职场文书
个人近期表现材料
2014/02/11 职场文书
无私奉献演讲稿
2014/09/04 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
python实现会员管理系统
2022/03/18 Python
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫
python字符串的一些常见实用操作
2022/04/06 Python