• 跟着百度学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);//脚本执行完语句以后要将程序恢复原来的样子
     ?>
  • 相关阅读:
    总结:关于作用域的经典面试题
    解决JS拖拽出现的问题
    JS正则(3)总结
    JS正则(2)对正则的理解
    JS 闭包 正则(1)
    JS Date对象
    笔记
    9.13笔记
    9.12学习笔记
    9.11学习笔记
  • 原文地址:https://www.cnblogs.com/xishaonian/p/6427174.html
Copyright © 2020-2023  润新知