跟着百度学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);//脚本执行完语句以后要将程序恢复原来的样子
 ?>
原文地址:https://www.cnblogs.com/xishaonian/p/6427174.html