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 相关文章推荐
介绍一些PHP判断变量的函数
Apr 24 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
Dec 17 PHP
php实现模拟登陆方正教务系统抓取课表
May 19 PHP
php动态函数调用方法
May 21 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
PHP5.5.15+Apache2.4.10+MySQL5.6.20配置方法分享
May 06 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
PHP实现简单的模板引擎功能示例
Sep 02 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
PHP面向对象程序设计继承用法简单示例
Dec 28 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
Zend引擎的发展 [15]
2006/10/09 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
Jquery 选中表格一列并对表格排序实现原理
2012/12/15 Javascript
js网页中的(运行代码)功能实现思路
2013/02/04 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
javascript文本模板用法实例
2015/07/31 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
详解如何使用webpack打包Vue工程
2017/05/27 Javascript
JavaScript+H5实现微信摇一摇功能
2018/05/23 Javascript
微信小程序实现发红包功能
2018/07/11 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
windows下Virtualenvwrapper安装教程
2017/12/13 Python
PyQt5实现拖放功能
2018/04/25 Python
Django rest framework实现分页的示例
2018/05/24 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
Python requests获取网页常用方法解析
2020/02/20 Python
小学教师师德感言
2014/02/10 职场文书
节水口号标语
2014/06/19 职场文书
就业意向书
2014/07/29 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server
golang 实现并发求和
2021/05/08 Golang