0
我在插入mysql表時遇到問題。我有3個相關的表插入保存,但我想確保所有的查詢都運行,或者沒有。我已經在C#中完成了這項工作,但是我想知道如何在PHP中完成此工作。在mysql表中插入多個
我在插入mysql表時遇到問題。我有3個相關的表插入保存,但我想確保所有的查詢都運行,或者沒有。我已經在C#中完成了這項工作,但是我想知道如何在PHP中完成此工作。在mysql表中插入多個
爲了有一個全有或全無的行爲,你需要使用一個交易:
在PHP中,如果與PDO工作,你要使用PDO::beginTransaction()
,PDO::commit()
和PDO::rollback()
方法。
如果使用MySQLi,則需要使用mysqli::commit()
和mysqli::rollback()
- 在禁用與mysqli::autocommit()
的自動提交後。
要檢測一個查詢失敗,你會想:
PDO::setAttribute()
所以在發生錯誤時拋出異常。mysqli::query()
返回false
。
謝謝你的回覆。我正在使用核心的PHP。但我仍然對如何處理錯誤感到困惑。即我如何識別在查詢執行過程中發生的錯誤。 – Abhilash 2011-04-07 10:36:35
注意以下事項也很重要:1)除非表使用InnoDB引擎,否則事務命令會被服務器忽略2)無論API如何,您也可以手動運行相應的SQL命令。 – 2011-04-07 10:39:25
我編輯了我的答案,提供了一些關於此的附加信息。 「core php」並沒有太多意義:你必須使用擴展名*(PDO,mysql或mysqli)*連接到MySQL數據庫 - 並且不應該再使用mysql *(不支持由最近版本的MySQL)* – 2011-04-07 10:40:11