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 26 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
php 计划任务 检测用户连接状态
Mar 29 PHP
PHP数组循环操作详细介绍 附实例代码
Feb 03 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
Jun 18 PHP
解析PHP工厂模式的好处
Jun 18 PHP
PHP链接MySQL的常用扩展函数
Oct 23 PHP
PHP+MySQL之Insert Into数据插入用法分析
Sep 27 PHP
PHP保存session到memcache服务器的方法
Jan 19 PHP
PHP设计模式之工厂模式实例总结
Sep 01 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
PHP进阶学习之命名空间基本用法分析
Jun 18 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
Drupal7中常用的数据库操作实例
2014/03/02 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
2014/06/19 PHP
PHP7新增函数
2021/03/09 PHP
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
Javascript 面向对象 对象(Object)
2010/05/13 Javascript
不要在cookie中使用特殊字符的原因分析
2010/07/13 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
学习JavaScript图片预加载模块
2016/11/07 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
WebStorm ES6 语法支持设置&amp;babel使用及自动编译(详解)
2017/09/08 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
2017/10/30 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
Python-基础-入门 简介
2014/08/09 Python
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
python实现爬虫下载美女图片
2015/07/14 Python
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
python如何实现代码检查
2019/06/28 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
软件售后服务方案
2014/05/29 职场文书
2014年团总支工作总结
2014/11/21 职场文书
房产电话营销开场白
2015/05/29 职场文书
学校隐患排查制度
2015/08/05 职场文书