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 实现多服务器共享 SESSION 数据
Aug 15 PHP
用php将任何格式视频转为flv的代码
Sep 03 PHP
PHP similar_text 字符串的相似性比较函数
May 26 PHP
PHP取整数函数常用的四种方法小结
Jul 05 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
php操作xml入门之cdata区段
Jan 23 PHP
php在数组中查找指定值的方法
Mar 17 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
Jul 14 PHP
PHP使用curl函数发送Post请求的注意事项
Nov 26 PHP
PHP验证终端类型是否为手机的简单实例
Feb 07 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 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
PHP版国家代码、缩写查询函数代码
2011/08/14 PHP
php查询操作实现投票功能
2016/05/09 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
jquery五角星评分插件示例分享
2014/02/21 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
Node.js实现简单管理系统
2019/09/23 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
vue+element-ui JYAdmin后台管理系统模板解析
2020/07/28 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
[55:16]Mski vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
[03:41]2018完美盛典-《Fight With Us》
2018/12/16 DOTA
[01:00:30]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第二场 10.31
2020/11/02 DOTA
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
python标准算法实现数组全排列的方法
2015/03/17 Python
python类和继承用法实例
2015/07/07 Python
Python玩转Excel的读写改实例
2019/02/22 Python
python集合的创建、添加及删除操作示例
2019/10/08 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
高中打架检讨书
2014/02/13 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书