本文实例讲述了php下pdo的mysql事务处理用法。分享给大家供大家参考。具体分析如下:
php+mysql事务处理的几个步骤:
1.关闭自动提交 2.开启事务处理 3.有异常就自动抛出异常提示再回滚 4.开启自动提交
注意:mysql只有这个InnoDB驱动是支持事务处理的,默认MyIsAM驱动不支持,下面是实例代码:
复制代码 代码如下:<"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程序设计有所帮助。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?