簡體   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