2011-04-07 47 views
0

我在插入mysql表時遇到問題。我有3個相關的表插入保存,但我想確保所有的查詢都運行,或者沒有。我已經在C#中完成了這項工作,但是我想知道如何在PHP中完成此工作。在mysql表中插入多個

回答

3

爲了有一個全有或全無的行爲,你需要使用一個交易:

  • 啓動事務
  • 如果所有查詢已成功執行做你的查詢
  • ,提交
  • else,rollback。


在PHP中,如果與PDO工作,你要使用PDO::beginTransaction()PDO::commit()PDO::rollback()方法。

如果使用MySQLi,則需要使用mysqli::commit()mysqli::rollback() - 在禁用與mysqli::autocommit()的自動提交後。


要檢測一個查詢失敗,你會想:

+0

謝謝你的回覆。我正在使用核心的PHP。但我仍然對如何處理錯誤感到困惑。即我如何識別在查詢執行過程中發生的錯誤。 – Abhilash 2011-04-07 10:36:35

+0

注意以下事項也很重要:1)除非表使用InnoDB引擎,否則事務命令會被服務器忽略2)無論API如何,您也可以手動運行相應的SQL命令。 – 2011-04-07 10:39:25

+0

我編輯了我的答案,提供了一些關於此的附加信息。 「core php」並沒有太多意義:你必須使用擴展名*(PDO,mysql或mysqli)*連接到MySQL數據庫 - 並且不應該再使用mysql *(不支持由最近版本的MySQL)* – 2011-04-07 10:40:11