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与XML、XSLT、Mysql的结合运用实现代码
Nov 19 PHP
PHP 写文本日志实现代码
May 18 PHP
PHP中uploaded_files函数使用方法详解
Mar 09 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
Jun 16 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
Dec 18 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
Jan 11 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
PHP7引入的&quot;??&quot;和&quot;?:&quot;的区别讲解
Apr 08 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
Feb 07 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
Apr 27 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&amp;mysql(二)
2006/10/09 PHP
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
JS trim去空格的最佳实践
2011/10/30 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
2014/02/27 Javascript
Javascript 实现复制(Copy)动作方法大全
2014/06/20 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
一个JavaScript防止表单重复提交的实例
2014/10/21 Javascript
javascript学习小结之prototype
2015/12/03 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
2020/03/12 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
Python魔术方法详解
2015/02/14 Python
深入Python函数编程的一些特性
2015/04/13 Python
Python函数可变参数定义及其参数传递方式实例详解
2015/05/25 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
2016/10/12 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
python爬取股票最新数据并用excel绘制树状图的示例
2021/03/01 Python
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
党员公开承诺践诺书
2014/03/25 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
关于环保的标语
2014/06/13 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
祝寿主持词
2015/07/02 职场文书