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 filter_var() 函数 Filter 函数
Apr 25 PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 PHP
服务器变量 $_SERVER 的深入解析
Jul 02 PHP
浅析php中三个等号(===)和两个等号(==)的区别
Aug 06 PHP
PHP获取本周第一天和最后一天示例代码
Feb 24 PHP
PHP基于数组实现的分页函数实例
Aug 20 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
Mar 18 PHP
php中smarty模板条件判断用法实例
Jun 11 PHP
PHP抓取及分析网页的方法详解
Apr 26 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
Jul 26 PHP
php探针不显示内存解决方法
Sep 17 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
我的论坛源代码(七)
2006/10/09 PHP
PHP 错误之引号中使用变量
2009/05/04 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
php使用json_encode对变量json编码
2014/04/07 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
PHP7内核CGI与FastCGI详解
2019/04/14 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
Javascript中Eval函数的使用说明
2008/10/11 Javascript
js中eval详解
2012/03/30 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
javascript模拟命名空间
2015/04/17 Javascript
jquery获取当前元素索引值用法实例
2015/06/10 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
[07:37]DOTA2-DPC中国联赛2月2日Recap集锦
2021/03/11 DOTA
在Django的URLconf中使用命名组的方法
2015/07/18 Python
使用Python从零开始撸一个区块链
2018/03/14 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
python实现微信小程序自动回复
2018/09/10 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
python字符串格式化方式解析
2019/10/19 Python
python时间日期操作方法实例小结
2020/02/06 Python
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
外语专业毕业生自我评价分享
2013/10/05 职场文书
教师党员整改措施
2014/10/24 职场文书
出纳岗位职责范本
2015/03/31 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL