找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 271|回复: 0
打印 上一主题 下一主题

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

[复制链接]

3444

主题

3465

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11142
跳转到指定楼层
楼主
发表于 2018-2-14 05:50:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了php下pdo的mysql事务处理用法。分享给大家供大家参考。具体分析如下:
php+mysql事务处理的几个步骤:
1.关闭自动提交 2.开启事务处理 3.有异常就自动抛出异常提示再回滚 4.开启自动提交
注意:mysql只有这个InnoDB驱动是支持事务处理的,默认MyIsAM驱动不支持,下面是实例代码:
[U]复制代码[/U] 代码如下: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程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • 全新的PDO数据库操作类php版(仅适用Mysql)
  • Php中用PDO查询Mysql来避免SQL注入风险的方法
  • PHP实现PDO的mysql数据库操作类
  • php使用PDO操作MySQL数据库实例
  • php中数据库连接方式pdo和mysqli对比分析
  • php中mysql连接方式PDO使用详解
  • php基于PDO实现功能强大的MYSQL封装类实例
  • PHP PDO操作MySQL基础教程
  • php mysql PDO 查询操作的实例详解
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端