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 socke 向指定页面提交数据
Jul 23 PHP
php 购物车实例(申精)
May 11 PHP
在mysql数据库原有字段后增加新内容
Nov 26 PHP
php循环语句 for()与foreach()用法区别介绍
Sep 05 PHP
ThinkPHP关联模型操作实例分析
Sep 23 PHP
PHP CLI模式下的多进程应用分析
Jun 03 PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 PHP
php微信开发自定义菜单
Aug 27 PHP
PHP7新增运算符用法实例分析
Sep 26 PHP
php自定义函数转换html标签示例
Sep 29 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 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
如何正确理解PHP的错误信息
2006/10/09 PHP
PHP empty函数报错解决办法
2014/03/06 PHP
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
2014/12/15 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
拥有一个属于自己的javascript表单验证插件
2016/03/24 Javascript
javascript原生ajax写法分享
2016/04/10 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
js变量提升深入理解
2016/09/16 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
jQuery在header中设置请求信息的方法
2017/03/06 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
JavaScript中的各种宽高属性的实现
2020/05/08 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
python文件和目录操作方法大全(含实例)
2014/03/12 Python
Python 对象中的数据类型
2017/05/13 Python
Python实现连接postgresql数据库的方法分析
2017/12/27 Python
python去掉空白行的多种实现代码
2018/03/19 Python
Python实现对特定列表进行从小到大排序操作示例
2019/02/11 Python
python opencv摄像头的简单应用
2019/06/06 Python
python中用logging实现日志滚动和过期日志删除功能
2019/08/20 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
校园网站的创业计划书范文
2013/12/30 职场文书
社区工作者感言
2014/03/02 职场文书
六年级学生评语
2014/04/22 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python