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 相关文章推荐
实用函数2
Nov 08 PHP
php 常用类整理
Dec 23 PHP
php中随机显示图片的函数代码
Jun 23 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 PHP
支付宝接口开发集成支付环境小结
Mar 17 PHP
php猴子选大王问题解决方法
May 12 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
Jul 03 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
Jan 27 PHP
Laravel 登录后清空COOKIE的操作方法
Oct 14 PHP
解决Laravel使用验证时跳转到首页的问题
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+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
prototype class详解
2006/09/07 Javascript
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
2007/02/05 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
javascript中scrollTop详解
2015/04/13 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
解决vue接口数据赋值给data没有反应的问题
2018/08/27 Javascript
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
python读取LMDB中图像的方法
2018/07/02 Python
python下载库的步骤方法
2019/10/12 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
python支持多继承吗
2020/06/19 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
Python 创建TCP服务器的方法
2020/07/28 Python
html5简介及新增功能介绍
2020/05/18 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
Android面试题附答案
2014/12/08 面试题
写求职信有什么意义
2014/02/17 职场文书
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
2015年档案室工作总结
2015/05/23 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
导游词之长城八达岭
2019/09/24 职场文书
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL