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.ini中文版(2)
Oct 09 PHP
在PWS上安装PHP4.0正式版
Oct 09 PHP
删除数组元素实用的PHP数组函数
Aug 18 PHP
在PHP中PDO解决中文乱码问题的一些补充
Sep 06 PHP
20个PHP常用类库小结
Sep 11 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
May 10 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
Nov 20 PHP
编写PHP脚本过滤用户上传的图片
Jul 03 PHP
今天你说520了吗?不仅有php表白书还有java表白神器
May 20 PHP
PHP用户注册邮件激活账户的实现代码
May 31 PHP
PHP中mysqli_get_server_version()的实例用法
Feb 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
PHP 快速排序算法详解
2014/11/10 PHP
PHP的PDO常用类库实例分析
2016/04/07 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
JS控制表格隔行变色
2006/06/26 Javascript
Prototype Class对象学习
2009/07/19 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
JS获取短信验证码倒计时的实现代码
2017/05/22 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
值得收藏的vuejs安装教程
2017/11/21 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
2020/05/19 jQuery
python del()函数用法
2013/03/24 Python
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
Python实现的归并排序算法示例
2017/11/21 Python
Python中GIL的使用详解
2018/10/03 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
3种python调用其他脚本的方法
2020/01/06 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
MYSQL支持事务吗
2013/08/09 面试题
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
员工拓展培训方案
2014/02/15 职场文书
测控技术自荐信
2014/06/05 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android
Python软件包安装的三种常见方法
2022/07/07 Python