2014-03-06 90 views
1

美好的一天。在MySql中多次更新一個字段

我已經完成了在數據庫中複製CSV的腳本,然後開始導入系統中的數據。這是通過在整個「導入」表上傳遞多次,首先導入類別,然後取出產品......等等。 每次腳本通過時,它會更新一個標誌字段importato,當我複製CSV時它是0,然後我導入類別,所以我把它放在1,然後2,依此類推。通過這種方式,我可以跟蹤發生了什麼。

如果我在導入過程中遇到了一些錯誤,我將importato字段設置爲10,所以最後我有所有的項目有一些錯誤。但我想跟蹤過去的進口情況,所以每次我寫CSV時,我都會將importato更新爲11,然後再更新到12然後是13,最後我刪除所有的13.這是通過一系列的update

if(mysql_query("DELETE FROM `importazione` WHERE importato = 13")){ 

     if(mysql_query("DELETE FROM `importazione` WHERE (importato = 4) OR (importato = 5) OR (importato = 6)")){ 

      if(mysql_query("UPDATE importazione set importato = 13 where importato = 12")){ 

       if(mysql_query("UPDATE importazione set importato = 12 where importato = 11")){ 

        mysql_query("UPDATE importazione set importato = 11 where importato = 10"); 
       } 
      }   
     } 
    } 

問題是......該字段從未更新,它停留在10 ...沒有錯誤拋出... 可能是一個緩衝的問題?或者我犯了一些我不明白的錯誤?

回答

1

我猜測,因爲mysql_query的結果如果傳遞給if聲明,表明其中一個失敗,這意味着其下的其他查詢將無法運行。檢查你的用戶是否有權限可以執行DELETE FROM

另外你這樣做的方式是非常不合適的。你可以做你正在做的事情在5個查詢2

if(mysql_query("DELETE FROM `importazione` WHERE importato = 13 OR importato IN (4,5,6)") { 
    mysql_query("UPDATE importazione SET importato = importato + 1 WHERE importato IN(12,11,10)"); 
} 

請注意:mysql_功能現在已經過時,所以你應該考慮使用替代

+0

好點。用戶有權這樣做,但關於IF的事情可能是正確的,我會嘗試你的代碼。 –