Php 使用PDO的事务

Php 使用PDO的事务,php,mysql,pdo,transactions,Php,Mysql,Pdo,Transactions,我的理解是InnoDB现在是MySQL的默认引擎。有了这些知识,我开始钻研交易 这是我到目前为止所拥有的 try{ $pdo->beginTransaction(); $stmnt = $pdo->prepare ("delete from playing where uniq = :uniq"); $stmnt->bindParam (':uniq',$uniq); $stmnt->execute();

我的理解是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语句成功执行,它们都将被提交,但是要么失败,不会发生数据库活动,并且将生成一条错误消息,详细说明第一个失败的语句执行

我真正的问题是begin事务和commit应该位于try…catch块之内还是之外

谢谢,
-dmd-

为了可读性和清洁度,是的,它应该在try块内。但这真的不重要。如果您调用回滚,它只是声明要提交或回滚的内容。

我的回答没有回答您的问题吗?