簡體   English   中英

在MySQL循環中使用MySQL事務麻煩

[英]Trouble using MySQL transactions with loops in PHP

我試圖建立一個MySQL事務,以便我可以遍歷一堆查詢(見下文),如果其中任何一個失敗,則回滾所有更改。 但是,我發現如果失敗,則不會回滾所有查詢。 我在這里做錯什么嗎?

mysql_query("START TRANSACTION");

     foreach($array1 as $arr){

          // loop SQL query

          if(mysql_error()){
               $failed = "...";
          }
     }


     foreach($array2 as $arr){

          // loop SQL query

          if(mysql_error()){
               $failed = "...";
          }
     }

     if(isset($failed)){
          mysql_query("ROLLBACK");
     } else {
          mysql_query("COMMIT");
     }

謝謝!

原因是如果查詢失敗(由於錯誤),事務將自動回滾並終止。 因此,如果查詢失敗,您應該停止循環,因為在查詢失敗后執行的所有操作都會自動提交(或者如果AUTOCOMMIT關閉,則至少在另一個事務中)...

您使用的是交易安全表類型嗎? 默認的MyISAM不支持事務,我建議使用InnoDB。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM