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实现多服务器session共享之NFS共享的方法
Mar 16 PHP
PHP截取汉字乱码问题解决方法mb_substr函数的应用
Mar 30 PHP
php 生成随机验证码图片代码
Feb 08 PHP
php写的简易聊天室代码
Jun 04 PHP
php设计模式 Mediator (中介者模式)
Jun 26 PHP
PHP获取MAC地址的具体实例
Dec 13 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
PHP+jquery+ajax实现即时聊天功能实例
Dec 23 PHP
php文件上传简单实现方法
Jan 24 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
PHP集成环境XAMPP的安装与配置
Nov 13 PHP
PHP实现创建以太坊钱包转账等功能
Apr 21 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
ThinkPHP分页实例
2014/10/15 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
node.js中的http.response.removeHeader方法使用说明
2014/12/14 Javascript
JS实现网页标题随机显示名人名言的方法
2015/11/03 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
Python中的集合类型知识讲解
2015/08/19 Python
Django之模板层的实现代码
2019/09/09 Python
Python上下文管理器全实例详解
2019/11/12 Python
python socket通信编程实现文件上传代码实例
2019/12/14 Python
python中元组的用法整理
2020/06/15 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
优秀英语专业毕业生求职信
2013/11/23 职场文书
酒店副总经理岗位职责范本
2014/02/04 职场文书
小班开学寄语
2014/04/04 职场文书
企业负责人任命书
2014/06/05 职场文书
经典团队口号
2014/06/06 职场文书
解除租房协议书
2014/12/03 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
详解Python常用的魔法方法
2021/06/03 Python
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB
分享python函数常见关键字
2022/04/26 Python