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);//脚本执行完语句以后要将程序恢复原来的样子
     ?>
  • 相关阅读:
    修改eclipse启动程序超时时间
    ssh配置无密码登录
    mac系统下配置域名映射关系
    连接mysql时报:message from server: "Host '192.168.76.89' is not allowed to connect to this MySQL server
    linux下开机启动svn配置
    redhat修复hostname主机名
    VMware克隆虚拟机后网络配置
    java web框架收集
    linux下离线安装svn服务器并配置
    idea把项目提交到svn服务器步骤
  • 原文地址:https://www.cnblogs.com/xishaonian/p/6427174.html
Copyright © 2011-2022 走看看