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 相关文章推荐
用mysql内存表来代替php session的类
Feb 01 PHP
PHP 组件化编程技巧
Jun 06 PHP
php 读取文件乱码问题
Feb 20 PHP
php设计模式 Visitor 访问者模式
Jun 28 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
Dec 29 PHP
PHP实现支持加盐的图片加密解密
Sep 09 PHP
php微信公众平台开发之微信群发信息
Sep 13 PHP
Referer原理与图片防盗链实现方法详解
Jul 03 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
Aug 23 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
六酷社区论坛HOME页清新格调免费版 下载
2007/03/07 PHP
IE下js调试工具Companion.JS
2010/10/15 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
JS中的eval 为什么加括号
2016/04/13 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
2016/05/23 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
Webpack执行命令参数详解
2017/06/17 Javascript
详解js静态资源文件请求的处理
2017/08/01 Javascript
Python切片知识解析
2016/03/06 Python
windows系统下Python环境搭建教程
2017/03/28 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
Python按钮的响应事件详解
2019/03/04 Python
基于python生成器封装的协程类
2019/03/20 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
Jmeter HTTPS接口测试证书导入过程图解
2020/07/22 Python
Python3如何使用tabulate打印数据
2020/09/25 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
美国在线家具网站:GDFStudio
2021/03/13 全球购物
一道Delphi面试题
2016/10/28 面试题
医药代表个人求职信范本
2013/12/19 职场文书
护士自我介绍信
2014/01/13 职场文书
大学生创业感言
2014/01/25 职场文书
物理研修随笔感言
2014/02/14 职场文书
总经理的岗位职责
2014/02/23 职场文书
小学语文教研活动总结
2014/07/01 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
丧事答谢词
2015/01/05 职场文书
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL