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 模拟$_PUT实现代码
Mar 15 PHP
PHP类中Static方法效率测试代码
Oct 17 PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 PHP
php操作xml入门之xml标签的属性分析
Jan 23 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
php简单统计中文个数的方法
Sep 30 PHP
php redis实现对200w用户的即时推送
Mar 04 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 PHP
laravel 去掉index.php伪静态的操作方法
Oct 12 PHP
Laravel框架实现即点即改功能的方法分析
Oct 31 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 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
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
Javascript 写的简单进度条控件
2008/01/22 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
javascript hasFocus使用实例
2010/06/29 Javascript
JavaScript 变量作用域分析
2011/07/04 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
2019/04/17 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
python使用装饰器和线程限制函数执行时间的方法
2015/04/18 Python
python获取当前日期和时间的方法
2015/04/30 Python
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
公司人力资源的自我评价
2014/01/02 职场文书
网络管理员岗位职责
2014/03/17 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
休学证明范本
2015/06/19 职场文书
幼儿园六一儿童节主持词
2015/06/30 职场文书
清明扫墓感想
2015/08/11 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
Python 正则模块详情
2021/11/02 Python
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers