php下pdo的mysql事务处理用法实例


Posted in PHP onDecember 27, 2014

本文实例讲述了php下pdo的mysql事务处理用法。分享给大家供大家参考。具体分析如下:

php+mysql事务处理的几个步骤:

1.关闭自动提交 2.开启事务处理 3.有异常就自动抛出异常提示再回滚 4.开启自动提交

注意:mysql只有这个InnoDB驱动是支持事务处理的,默认MyIsAM驱动不支持,下面是实例代码:

<?php 

    try{ 

        $pdo=new pdo("mysql:host=localhost;dbname=mydb", "root", "root", array(PDO::ATTR_AUTOCOMMIT=>0));//最后是关闭自动提交 

        //$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0);//这个是通过设置属性方法进行关闭自动提交和上面的功能一样 

        $pdo->setAttribute(PDO::ATTR_ERRMODE,  PDO::ERRMODE_EXCEPTION);//开启异常处理 

    }catch(PDOException $e){ 

        echo "数据库连接失败:".$e->getMessage(); 

        exit;

    } 

    /* 

     * 事务处理 

     * 

     *   张三从李四那里买了一台 2000 元的电脑 

     *     从张三帐号中扣出 2000元 

     *     向李四账号中加入 2000元 

     *     从商品表中减少一台电脑 

     *     MyIsAM  InnoDB 

     */ 

    try{ 

        $pdo->beginTransaction();//开启事务处理        

        $price=500; 

        $sql="update zhanghao set price=price-{$price} where id=1"; 

        $affected_rows=$pdo->exec($sql); 

        if(!$affected_rows) 

            throw new PDOException("张三转出失败");//那个错误抛出异常 

        $sql="update zhanghao set price=price+{$price} where id=3"; 

        $affected_rows=$pdo->exec($sql);       

        if(!$affected_rows) 

            throw new PDOException("向李四转入失败"); 

        echo "交易成功!"; 

        $pdo->commit();//交易成功就提交 

    }catch(PDOException $e){ 

        echo $e->getMessage(); 

        $pdo->rollback(); 

    }   

    $pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 1);//自动提交,如果最后不自动提交,转账是不成功的   

    //设置错误报告模式 ERRMODE_SILENT    ERRMODE_WARNING 

?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
用定制的PHP应用程序来获取Web服务器的状态信息
Oct 09 PHP
DEDE采集大师官方留后门的删除办法
Jan 08 PHP
PHP删除HTMl标签的实现代码
Jun 30 PHP
php实现在线生成条形码示例分享(条形码生成器)
Dec 30 PHP
php中in_array函数用法探究
Nov 25 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
Oct 20 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
制作个性化的WordPress登陆界面的实例教程
May 21 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
Jul 01 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
ThinkPHP框架实现FTP图片上传功能示例
Apr 08 PHP
php5.3不能连接mssql数据库的解决方法
Dec 27 #PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 #PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 #PHP
php实现mysql备份恢复分卷处理的方法
Dec 26 #PHP
为PHP5.4开启Zend OPCode缓存
Dec 26 #PHP
Yii中使用PHPExcel导出Excel的方法
Dec 26 #PHP
PHP中mysqli_affected_rows作用行数返回值分析
Dec 26 #PHP
You might like
简单实现限定phpmyadmin访问ip的方法
2013/03/05 PHP
php生成短网址示例
2014/05/05 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
Symfony2创建页面实例详解
2016/03/18 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
2015/11/30 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
2017/01/12 NodeJs
React组件之间的通信的实例代码
2017/06/27 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
在create-react-app中使用sass的方法示例
2018/10/01 Javascript
angular6的响应式表单的实现
2018/10/10 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python装饰器模式定义与用法分析
2018/08/06 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
python从list列表中选出一个数和其对应的坐标方法
2019/07/20 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
Python常用编译器原理及特点解析
2020/03/23 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
美国名牌太阳镜折扣网站:Eyedictive
2017/05/15 全球购物
企业项目策划书
2014/01/11 职场文书
2014年关于两会精神的心得体会
2014/03/17 职场文书
学校献爱心活动总结
2014/07/08 职场文书
英语通知范文
2015/04/22 职场文书