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 相关文章推荐
ftp类(example.php)
Oct 09 PHP
PHP 检查扩展库或函数是否可用的代码
Apr 06 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 PHP
php学习之function的用法
Jul 14 PHP
Codeigniter整合Tank Auth权限类库详解
Jun 12 PHP
非常好用的Zend Framework分页类
Jun 25 PHP
PHP中使用CURL模拟登录并获取数据实例
Jul 01 PHP
CI框架安全类Security.php源码分析
Nov 04 PHP
PHP获取文件扩展名的4种方法
Nov 24 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
May 16 PHP
PHP XML Expat解析器知识点总结
Feb 15 PHP
php数值计算num类简单操作示例
May 15 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图片上传类带图片显示
2006/11/25 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
2012/05/29 PHP
php stream_get_meta_data返回值
2013/09/29 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
微信小程序 实现动态显示和隐藏某个控件
2017/04/27 Javascript
基于AngularJS实现表单验证功能
2017/07/28 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
Python实现简单状态框架的方法
2015/03/19 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
Python API len函数操作过程解析
2020/03/05 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
Python基于Webhook实现github自动化部署
2020/11/28 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
Aurora London官网:奢华、负担得起的皮革手袋
2020/08/01 全球购物
2014教师党员自我评议总结
2014/09/19 职场文书
六年级作文之关于梦
2019/10/22 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python
我收到了德劲DE1107
2022/04/05 无线电