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中去除换行解决办法小结(PHP_EOL)
Nov 27 PHP
PHP关联数组的10个操作技巧
Jan 21 PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
php定义数组和使用示例(php数组的定义方法)
Mar 29 PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 PHP
PHPExcel简单读取excel文件示例
May 26 PHP
使用PHPMailer发送邮件实例
Feb 15 PHP
如何离线执行php任务
Feb 21 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 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
玩转虚拟域名◎+ .
2006/10/09 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
2019/08/27 PHP
围观tangram js库
2010/12/28 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
浅谈JS原生Ajax,GET和POST
2016/06/08 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
详解nodejs微信公众号开发——6.自定义菜单
2017/04/13 NodeJs
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
webstorm添加*.vue文件支持
2018/05/08 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
优秀班主任事迹材料
2014/12/16 职场文书
英文升职感谢信
2015/01/23 职场文书
如何写辞职书
2015/02/26 职场文书
奖励通知
2015/04/22 职场文书
学习经验交流会策划书
2015/11/02 职场文书
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python