問題:
CodeIgniter 事務對於安全資料庫插入是可靠的。但是,當在事務邊界(trans_start 和 trans_complete)內呼叫外部函數時,這些函數內的資料庫操作不會在事務內處理。這可能會導致錯誤和不完整的回滾。
建議的解決方案:
要解決此問題,我們可以透過新增回滾檢查來手動處理外部函數中的資料庫操作每個函數內。如果發生錯誤,將啟動回滾。
程式碼:
// Function within Model public function insert_function($data) { $this->db->insert('table_name', $data); if ($this->db->error()) { $this->db->trans_rollback(); return false; // Error occurred } return true; // Success } // Calling Function within Transaction in Model $this->db->trans_start(); $result = $this->insert_function($data); if (!$result) { $this->db->trans_rollback(); } $this->db->trans_complete();
替代方法:
另一個方法是在trans_start 和trans_complete 邊界內的函數外部實作事務處理邏輯。這可確保外部函數內的任何資料庫操作都在事務內處理。
代碼:
// Function within Model public function insert_function($data) { $this->db->insert('table_name', $data); } // Calling Function within Transaction in Model $this->db->trans_start(); $this->insert_function($data); if ($this->db->error()) { $this->db->trans_rollback(); } $this->db->trans_complete();
重要注意事項:
以上是如何在CodeIgniter中處理多個函式呼叫中的交易?的詳細內容。更多資訊請關注PHP中文網其他相關文章!