php利用事务处理转账问题


Posted in PHP onApril 22, 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 
 try{ 
 $pdo=new PDO("mysql:host=localhost;dbname=psp","root",""); 
 $pdo->exec("set names utf8"); 
 $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//设置异常处理模式 
 $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0);//关闭自动提交 
 }catch(PDOException $e){ 
 echo "数据库连接失败"; 
 exit; 
 } 
 
 try{ 
 $age=10; 
 $pdo->beginTransaction();//开始事务 
 $affected_rows1=$pdo->exec("update kfry set k_age=k_age+{$age} where k_name='user1'"); 
 $affected_rows2=$pdo->exec("update kfry set k_age=k_age-{$age} where k_name='user2'");//随意更改使之执行成功或失败 
 /* if($affected_rows1&&$affected_rows2) 
 { 
 $pdo->commit(); 
 echo "操作成功"; 
 }else{ 
 $pdo->rollback(); 
 } */
 if(!$affected_rows1) 
 throw new PDOException("加入错误"); 
 if(!$affected_rows2) 
 throw new PDOException("减少错误"); 
 echo "操作成功"; 
 $pdo->commit();//如果执行到此处前面两个更新sql语句执行成功,整个事务执行成功 
 }catch(PDOException $e){ 
 echo "操作失败:".$e->getMessage(); 
 $pdo->rollback();//执行事务中的语句出了问题,整个事务全部撤销 
 } 
 $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1); 
 //测试是否成功 
 echo "\n操作结果为:\n"; 
 $sql="select * from kfry"; 
 $result=$pdo->query($sql); 
 foreach($result as $v) 
 { 
 echo $v['k_name']." ".$v['k_age']."\n"; 
 } 
?>

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
用php将任何格式视频转为flv的代码
Sep 03 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
PHP调用Linux的命令行执行文件压缩命令
Jan 27 PHP
php数组声明、遍历、数组全局变量使用小结
Jun 05 PHP
php记录代码执行时间(实现代码)
Jul 05 PHP
PHP时间格式控制符对照表分享
Jul 23 PHP
PHP获取当前url的具体方法全面解析
Nov 26 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
Jun 23 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
Nov 25 PHP
Laravel网站打开速度优化的方法汇总
Jul 16 PHP
laravel 中某一字段自增、自减的例子
Oct 11 PHP
ThinkPHP文件缓存类代码分享
Apr 22 #PHP
php文件下载处理方法分析
Apr 22 #PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 #PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 #PHP
php文件缓存类用法实例分析
Apr 22 #PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
Apr 21 #PHP
PHP判断是否为空的几个函数对比
Apr 21 #PHP
You might like
动态生成gif格式的图像要注意?
2006/10/09 PHP
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
Mozilla 表达式 __noSuchMethod__
2009/04/05 Javascript
js indexOf()定义和用法
2012/10/21 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
详解Bootstrap插件
2016/04/25 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
python采集博客中上传的QQ截图文件
2014/07/18 Python
python实现多线程的方式及多条命令并发执行
2016/06/07 Python
python实战教程之自动扫雷
2018/07/13 Python
Python在图片中插入大量文字并且自动换行
2019/01/02 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
python使用PyQt5的简单方法
2019/02/27 Python
python提取xml里面的链接源码详解
2019/10/15 Python
基于python监控程序是否关闭
2020/01/14 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
SQL面试题
2013/12/09 面试题
物流管理应届生求职信
2013/11/07 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
技术股份合作协议书
2014/10/05 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
古诗之感恩老师
2019/10/24 职场文书
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL