繁体   English   中英

使用PDO的交易

[英]Transactions using PDO

我的理解是InnoDB现在是MySQL的默认引擎。 有了这些知识,我就开始研究交易。

这是我到目前为止所拥有的...

try{
     $pdo->beginTransaction();
        $stmnt = $pdo->prepare ("delete from playing where uniq = :uniq");
        $stmnt->bindParam (':uniq',$uniq);
        $stmnt->execute();

        $stmnt = $pdo->prepare ("insert into removals (playdate, time, vid) values (:playdate, :time, :vid");
        $stmnt->bindParam (":playdate",$playdate);
        $stmnt->bindParam (":time", $time);
        $stmnt->bindParam (":vid", $vid);
        $stmnt->execute();

     $pdo->commit();

     echo "1"; // success
     return;
   }
   catch (PDOException $e){
      $pdo->rollback();
      echo $e->getMessage();
   }

jQuery调用它,结果为“ 1”表示成功。

如果我正确理解,如果bot语句成功执行,它们都将被“提交”,但是要么失败,就不会发生数据库活动,并且将生成一条错误消息,详细说明第一个失败的语句执行。

我真正的问题是,开始事务和提交应该位于try ... catch块之内还是之外。

谢谢-dmd-

为了可读性和清洁性,是的,它应该放在try块中。 但这真的没关系。 如果调用回滚,它仅声明要提交或回滚的内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM