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 相关文章推荐
经典的PHPer为什么被认为是草根?
Apr 02 PHP
php入门之连接mysql数据库的一个类
Apr 21 PHP
smarty模板中使用get、post、request、cookies、session变量的方法
Apr 24 PHP
11个PHPer必须要了解的编程规范
Sep 22 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
Jan 26 PHP
php实现数组按指定KEY排序的方法
Mar 30 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
May 12 PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 PHP
分析php://output和php://stdout的区别
May 06 PHP
php实现微信企业付款到个人零钱功能
Oct 09 PHP
php面向对象程序设计入门教程
Jun 22 PHP
解决Laravel blade模板转义html标签的问题
Sep 03 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
文件上传之SWFUpload插件(代码)
2015/07/30 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
php微信开发之谷歌测距
2018/06/14 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
在JavaScript中操作数组之map()方法的使用
2015/06/09 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
jquery ztree实现树的搜索功能
2016/02/25 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
2017/04/01 jQuery
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
uniapp,微信小程序中使用 MQTT的问题
2020/07/11 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
python3判断url链接是否为404的方法
2018/08/10 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
个人能力自我鉴赏
2014/01/25 职场文书
完美主义个人的自我评价
2014/02/17 职场文书
《故都的秋》教学反思
2014/04/15 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
先进个人自荐书
2015/03/06 职场文书
《乘法分配律》教学反思
2016/02/24 职场文书
六年级作文之关于梦
2019/10/22 职场文书
SQL Server内存机制浅探
2022/04/06 SQL Server