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 相关文章推荐
Mysql和网页显示乱码解决方法集锦
Mar 27 PHP
php目录操作函数之获取目录与文件的类型
Dec 29 PHP
PHP之数组学习
May 29 PHP
探讨PHP调用时间格式的参数详解
Jun 06 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
Aug 21 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
Oct 08 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
Mar 03 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
php中简单的对称加密算法实现
Jan 05 PHP
PHP下载远程图片的几种方法总结
Apr 07 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 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中print(),print_r(),echo()的区别详解
2014/12/01 PHP
图片连续滚动代码[兼容IE/firefox]
2009/06/11 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
JS实现一个按钮的方法
2015/02/05 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
Javascript的比较汇总
2016/07/25 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
JavaScript 继承详解(五)
2016/10/11 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
JS判断时间段的实现代码
2017/06/14 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
layer iframe 设置关闭按钮的方法
2019/09/12 Javascript
微信小程序swiper实现文字纵向轮播提示效果
2020/01/21 Javascript
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
web.py获取上传文件名的正确方法
2014/08/26 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
python实现飞船游戏的纵向移动
2020/04/24 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
Fashion Eyewear美国:英国线上设计师眼镜和太阳镜的零售商
2016/08/15 全球购物
英国领先的葡萄酒专家:Majestic Wine
2017/05/30 全球购物
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
财务会计专业求职信
2014/06/09 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
收款委托书
2014/10/14 职场文书
迟到检讨书
2015/01/26 职场文书
简历自我评价:教师师德表现自我评价
2019/04/24 职场文书