php+Mysqli利用事务处理转账问题实例


Posted in PHP onFebruary 11, 2015

本文实例讲述了php+Mysqli利用事务处理转账问题的方法。分享给大家供大家参考。具体实现方法如下:

<?php 
  header("Content-type:text/html; charset=utf-8"); 
   
  $mysqli = new mysqli("localhost", "root", "064319", "php"); 
  $mysqli->set_charset("utf8"); 
   
  if($mysqli->connect_errno) { 
   die('数据库连接失败'.$mysqli->connect_error); 
  } 
   
  $mysqli->autocommit(false); //自动提交模式设为false 
  $flag = true; //事务是否成功执行的标志 
   
  $query = "update account set balance=balance-1000 where id=3"; 
  $result = $mysqli->query($query); 
  $affected_count = $mysqli->affected_rows; 
  if(!result || $affected_count == 0) {  //失败 
   $flag = false;   
  } 
   
  $query = "update account set balance=balance+1000 where id=2"; 
  $result = $mysqli->query($query); 
  $affected_count = $mysqli->affected_rows; 
  if(!$result || $affected_count == 0) { 
   $flag = false; 
  } 
   
  if($flag) { 
   $mysqli->commit(); 
   echo '转账成功'; 
  } else { 
   $mysqli->rollback(); 
   echo '转账失败'; 
  } 
   
  $mysqli->autocommit(true); //重新设置事务为自动提交 
  $mysqli->close(); 
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
一个可查询所有表的“通用”查询分页类
Oct 09 PHP
其他功能
Oct 09 PHP
php minixml详解
Jul 19 PHP
php学习笔记 类的声明与对象实例化
Jun 13 PHP
有关phpmailer的详细介绍及使用方法
Jan 28 PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 PHP
PHP类的反射用法实例
Nov 03 PHP
YII视图整合kindeditor扩展的方法
Jul 13 PHP
深入浅出讲解:php的socket通信原理
Dec 03 PHP
PHP读取Excel类文件
May 15 PHP
Thinkphp5框架ajax接口实现方法分析
Aug 28 PHP
php输出形式实例整理
May 05 PHP
php使用iconv中文截断问题的解决方法
Feb 11 #PHP
php发送与接收流文件的方法
Feb 11 #PHP
php实现上传图片保存到数据库的方法
Feb 11 #PHP
php使用curl获取https请求的方法
Feb 11 #PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 #PHP
php判断并删除空目录及空子目录的方法
Feb 11 #PHP
php获取YouTube视频信息的方法
Feb 11 #PHP
You might like
9个PHP开发常用功能函数小结
2011/07/15 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
PHP读取RSS(Feed)简单实例
2014/06/12 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
php的socket编程详解
2016/11/20 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
jQuery实现下拉框左右移动(全部移动,已选移动)
2016/04/15 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
Vue-Router的使用方法
2018/09/05 Javascript
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
Python中无限元素列表的实现方法
2014/08/18 Python
python继承和抽象类的实现方法
2015/01/14 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
python模块如何查看
2020/06/16 Python
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
什么是接口(Interface)?
2013/02/01 面试题
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
2014年法制宣传日活动方案
2014/11/02 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python