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&amp;&amp;mysql)六
Oct 09 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
PHP判断一个gif图片是否为动态图片的方法
Nov 19 PHP
php实现图片添加描边字和马赛克的方法
Dec 10 PHP
9个经典的PHP代码片段分享
Dec 18 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
thinkphp实现图片上传功能
Jan 13 PHP
PHP简单日历实现方法
Jul 20 PHP
php session的应用详细介绍
Mar 22 PHP
浅谈PHP实现大流量下抢购方案
Dec 15 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
Oct 14 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
php下网站防IP攻击代码,超级实用
2010/10/24 PHP
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
对PHP语言认识上需要避免的10大误区
2014/06/12 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
解读ES6中class关键字
2017/11/20 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
详解angular路由高亮之RouterLinkActive
2018/04/28 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
angularjs模态框的使用代码实例
2019/12/20 Javascript
vue element-ui中table合计指定列求和实例
2020/11/02 Javascript
Python中实现对list做减法操作介绍
2015/01/09 Python
对Python新手编程过程中如何规避一些常见问题的建议
2015/04/01 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
python空元组在all中返回结果详解
2020/12/15 Python
新闻记者个人求职的自我评价
2013/11/28 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
2015年教师节活动总结
2015/03/20 职场文书
新党员入党决心书
2015/09/22 职场文书
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python
Python 图片添加美颜效果
2022/04/28 Python