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 相关文章推荐
PHP4中实现动态代理
Oct 09 PHP
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
Jan 30 PHP
PHP 开源AJAX框架14种
Aug 24 PHP
phpmyadmin打开很慢的解决方法
Apr 21 PHP
PHP开发框架kohana3 自定义路由设置示例
Jul 14 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
Nov 21 PHP
PHP中OpenSSL加密问题整理
Dec 14 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
Apr 27 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
May 06 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
laravel框架中间件简单使用方法示例
Jan 25 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实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
redis+php实现微博(一)注册与登录功能详解
2019/09/23 PHP
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
IE6,IE7,IE8下使用Javascript记录光标选中范围(已补全)
2011/08/28 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
vue3中轻松实现switch功能组件的全过程
2021/01/07 Vue.js
Javascript实现关闭广告效果
2021/01/29 Javascript
解析Python中的__getitem__专有方法
2016/06/27 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
Python 加密的实例详解
2017/10/09 Python
python绘制简单折线图代码示例
2017/12/19 Python
彻底搞懂Python字符编码
2018/01/23 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
django表单的Widgets使用详解
2019/07/22 Python
tensorflow 查看梯度方式
2020/02/04 Python
Python如何读写CSV文件
2020/08/13 Python
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
预备党员承诺书
2014/03/25 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书