zoukankan      html  css  js  c++  java
  • 跟着百度学PHP[14]-PDO之Mysql的事务处理2

    前面所将仅仅是在纯mysql下的讲解,这节就是要将其搬到PDO台面上来了。

    1. 将自动提交关闭。
    2. SetAttribute下有一个PDO::ATTR_AUTOCOMMIT

    将其设置为0即可关闭,如:$pdo ->setAttribute(PDO::ATTR_AUTOCOMMIT,0);

    切记在最后的时候要将其设置为开启。如:$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,1);

    <?php 
    try{
        $pdo = new pdo("mysql:host=localhost;port=3306;dbname=test","root","");
    }catch(PDOException $e){
        echo $e->getmessage();
    }
        $pdo->setattribute(PDO::ATTR_AUTOCOMMIT,1);
        echo "PDO对象创建成功.<br />";
    
    
        $pdo->setattribute(PDO::ATTR_AUTOCOMMIT,0);//脚本执行完语句以后要将程序恢复原来的样子
     ?>

    2.开启事件处理

    在PDO就有那么一个方法:PDO::beginTransaction

    其作用就是用来开启事物处理的。

    用法是直接调用即可:$pdo ->beginTransaction();

    跟着百度学PHP[14]-PDO之Mysql的事务处理1中的案例:

    <?php 
    try{
        $pdo = new pdo("mysql:host=localhost;port=3306;dbname=test","root","");
    }catch(PDOException $e){
        echo $e->getmessage();
    }
        $pdo->setattribute(PDO::ATTR_AUTOCOMMIT,0);
        echo "PDO对象创建成功.<br />";
    
    try{
        $pdo -> beginTransaction();
        $price = 10;
        //张三减去十元
        $sql_1 = $pdo->exec("update demo set yue=yue - {$price} where username ='zhangsan'");
        $sql_2 = $pdo ->exec("update demo set yue=yue + {$price} where username ='lisi'");
        if ($sql_1) {
            echo "张三成功转账{$price}元。";
        }
        if ($sql_2) {
            echo "李四成功收到{$price}元";
        }
    }catch(PDOException $e){
        echo $e->getmessage();
        $pdo->rollback();
    }
        $pdo->commit();
    
    
        $pdo->setattribute(PDO::ATTR_AUTOCOMMIT,1);//脚本执行完语句以后要将程序恢复原来的样子
     ?>
  • 相关阅读:
    C#3.0实现变异赋值(Mutantic Assignment)
    博客园积分算法探讨
    C#动静结合编程之二: 两种哲学
    REST构架风格介绍之二:CRUD
    C# vs C++之一:委托 vs 函数指针
    REST构架风格介绍之一:状态表述转移
    C#动静结合编程之三:Duck Typing
    C#动静结合编程之四:泛型委托
    C# vs C++之二:GC vs RAII
    Ecshop文章分类列表页如何自定义Title以提高SEO效果
  • 原文地址:https://www.cnblogs.com/xishaonian/p/6427174.html
Copyright © 2011-2022 走看看