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 相关文章推荐
如何做到多笔资料的同步
Oct 09 PHP
echo(),print(),print_r()之间的区别?
Nov 19 PHP
PHP扩展编写点滴 技巧收集
Mar 09 PHP
DedeCMS dede_channeltype表字段注释
Apr 07 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
Jun 06 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 PHP
ThinkPHP控制器里javascript代码不能执行的解决方法
Nov 22 PHP
yii的CURD操作实例详解
Dec 04 PHP
php 5.6版本中编写一个PHP扩展的简单示例
Jan 20 PHP
Smarty简单生成表单元素的方法示例
May 23 PHP
PHP的简单跳转提示的实现详解
Mar 14 PHP
PHP文件上传小程序 适合初学者学习!
May 23 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
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
php+ajax实现异步上传文件或图片功能
2017/07/18 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
js实现表格筛选功能
2017/01/18 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
详解用JS添加和删除class类名
2019/03/25 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
Python常用的日期时间处理方法示例
2015/02/08 Python
使用python实现rsa算法代码
2016/02/17 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
python实现矩阵打印
2019/03/02 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
创意活动策划书
2014/01/15 职场文书
面试后的感谢信范文
2014/02/01 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
委托书的写法
2014/09/16 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
2014年远程教育工作总结
2014/12/09 职场文书
创卫工作总结2015
2015/04/22 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技
vue组件vue-esign实现电子签名
2022/04/21 Vue.js