php事务处理实例详解


Posted in PHP onJuly 11, 2014

一、php事务处理概述:

事务:是若干事件的集合
事务处理:当所有事件执行成功,事务才执行;若有任何一个事件不能成功执行,事务的其它事件也不被执行。

只要你的MySQL版本支持BDB或InnoDB表类型,那么你的MySQL就具有事务处理的能力。这里面,又以InnoDB表类型用的最多,虽然后来发生了诸如Oracle收购InnoDB等令MySQL不爽的事情,但是这类商业事件与技术无关,下面就以InnoDB表类型为例简单说一下MySQL中的事务处理。

二、php事务处理代码:

<?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实现框架(二)
Oct 09 PHP
php5新改动之短标记启用方法
Sep 11 PHP
PHP删除特定数组内容并且重建数组索引的方法.
Mar 25 PHP
实用PHP会员权限控制实现原理分析
May 29 PHP
10个实用的PHP代码片段
Sep 02 PHP
php数组编码转换示例详解
Mar 11 PHP
基于PHP实现等比压缩图片大小
Mar 04 PHP
微信红包随机生成算法php版
Jul 21 PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 PHP
PHP redis实现超迷你全文检索
Mar 04 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
Mar 28 PHP
浅析PHP7 的垃圾回收机制
Sep 06 PHP
PHP实现显示照片exif信息的方法
Jul 11 #PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
Jul 10 #PHP
PHP5.3与5.5废弃与过期函数整理汇总
Jul 10 #PHP
ThinkPHP标签制作教程
Jul 10 #PHP
YII路径的用法总结
Jul 09 #PHP
YII实现分页的方法
Jul 09 #PHP
YII模块实现绑定二级域名的方法
Jul 09 #PHP
You might like
SONY ICF-SW55的电路分析
2021/03/02 无线电
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
基于header的一些常用指令详解
2013/06/06 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
yii2安装详细流程
2018/05/23 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
create-react-app安装出错问题解决方法
2018/09/04 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
layui 上传文件_批量导入数据UI的方法
2019/09/23 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
python实现通过pil模块对图片格式进行转换的方法
2015/03/24 Python
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
python Event事件、进程池与线程池、协程解析
2019/10/25 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
荷兰超市:DEEN
2018/03/14 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
Ruby如何实现动态方法调用
2012/11/18 面试题
餐饮营销方案
2014/02/23 职场文书
毕业生简历自我评价范文
2014/04/09 职场文书
追讨欠款律师函
2015/05/27 职场文书
小学英语听课心得体会
2016/01/14 职场文书
volatile保证可见性及重排序方法
2022/08/05 Java/Android