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边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
C# Assembly类访问程序集信息
Jun 13 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
PHP 引用是个坏习惯
Mar 12 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
Aug 08 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
Jan 05 PHP
php+ajax无刷新上传图片的实现方法
Dec 06 PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 PHP
php删除数组指定元素实现代码
May 03 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
Nov 17 PHP
php微信开发之谷歌测距
Jun 14 PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 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
Content-type 的说明
2006/10/09 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
preg_match_all使用心得分享
2014/01/31 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
php中的字符编码转换函数用法示例
2014/10/20 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
微信小程序 开发经验整理
2017/02/15 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
JS 中document.write()的用法和清空的原因浅析
2017/12/04 Javascript
AngularJS ui-router刷新子页面路由的方法
2018/07/23 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
Python标准库defaultdict模块使用示例
2015/04/28 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
python集合是否可变总结
2019/06/20 Python
Python AutoCAD 系统设置的实现方法
2020/04/01 Python
python 下划线的不同用法
2020/10/24 Python
python中doctest库实例用法
2020/12/31 Python
英国在线花园中心:You Garden
2018/06/03 全球购物
关于幼儿的自我评价
2013/12/18 职场文书
高二物理教学反思
2014/02/08 职场文书
学校社会实践活动总结
2014/07/03 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
关于python爬虫应用urllib库作用分析
2021/09/04 Python
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers