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
php仿ZOL分页类代码
Oct 02 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 PHP
PHP常用处理静态操作类
Apr 03 PHP
typecho插件编写教程(三):保存配置
May 28 PHP
PHP实现HTTP断点续传的方法
Jun 17 PHP
php实现mysql数据库连接操作及用户管理
Nov 08 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
Laravel学习教程之model validation的使用示例
Oct 23 PHP
PHP实现一个轻量级容器的方法
Jan 28 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
Swoole实现异步投递task任务案例详解
Apr 02 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
用PHP调用Oracle存储过程的方法
2008/09/12 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
prettify 代码高亮着色器google出品
2010/12/28 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
对Python中的@classmethod用法详解
2018/04/21 Python
Python实现多条件筛选目标数据功能【测试可用】
2018/06/13 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
python自动生成证件号的方法示例
2021/01/14 Python
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
关于打架的检讨书
2014/01/17 职场文书
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
个人银行贷款担保书
2014/04/01 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
银行贷款委托书范本
2014/10/11 职场文书
2015年药店工作总结
2015/04/20 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
pandas中关于apply+lambda的应用
2022/02/28 Python
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL
彻底弄懂Python中的回调函数(callback)
2022/06/25 Python