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 变量的定义方法
Jan 26 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 PHP
给ECShop添加最新评论
Jan 07 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
Jan 22 PHP
php关键字仅替换一次的实现函数
Oct 29 PHP
深入理解PHP内核(一)
Nov 10 PHP
PHP带节点操作的无限分类实现方法详解
Nov 09 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
实现PHP中session存储及删除变量
Oct 15 PHP
php中关于换行的实例写法
Sep 26 PHP
php实现文件上传基本验证
Mar 04 PHP
PHP 99乘法表的几种实现代码
Oct 13 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
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
php实现登陆模块功能示例
2016/10/20 PHP
RSA实现JS前端加密与PHP后端解密功能示例
2019/08/05 PHP
Jquery插件之多图片异步上传
2010/10/20 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
js跨域问题浅析及解决方法优缺点对比
2014/11/08 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
js制作简易年历完整实例
2015/01/28 Javascript
跨域请求的完美解决方法(JSONP, CORS)
2016/06/12 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
详解如何快速配置webpack多入口脚手架
2018/12/28 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
Vue中props的详解
2019/05/16 Javascript
[48:23]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第一局
2016/03/05 DOTA
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
jupyter notebook 多行输出实例
2020/04/09 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
奥巴马演讲稿
2014/01/08 职场文书
运动会广播稿150字
2014/02/19 职场文书
2014年两会学习心得范例
2014/03/17 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
英语系本科生求职信
2014/07/15 职场文书
士兵突击观后感
2015/06/16 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python