首頁 >後端開發 >php教程 >如何可靠地檢測 CodeIgniter 中建立、更新或刪除查詢是否成功?

如何可靠地檢測 CodeIgniter 中建立、更新或刪除查詢是否成功?

Barbara Streisand
Barbara Streisand原創
2024-10-31 04:13:30369瀏覽

How can I reliably detect the success of a Create, Update, or Delete query in CodeIgniter?

在 CodeIgniter 中偵測建立、更新或刪除查詢是否成功

在 CodeIgniter 中執行資料庫操作時,必須驗證其成功。如果不這樣做,可能會導致資料不一致或向使用者顯示不正確的結果。

不正確的方法:

提供的控制器方法假設任何非零回傳update() 模型方法中的值表示成功。但是,這不是一種可靠的方法,因為即使查詢無法更新任何行,模型也可能會傳回非零值。

正確方法:

正確檢測數據庫操作是否成功,建議使用以下步驟:

控制器:

  • 透過POST 安全地接收輸入數據,而不是透過URL。
  • 使用CodeIgniter資料庫類別的affected_rows()方法來驗證執行查詢後受影響的行數。
  • 重新導向使用者並根據行數顯示成功或錯誤訊息受影響的行。

模型:

  • 處理資料庫查詢與錯誤檢查。
  • 使用 update() 方法CodeIgniter 資料庫類別來執行查詢。
  • 傳回受影響的行數,讓控制器決定操作的結果。

範例:

<code class="php">// Controller
public function delete($user_id)
{
    if ($this->input->server('REQUEST_METHOD') == 'POST') {
        $result = $this->Crm_user_model->delete($user_id);
        if ($result === false) {
            add_flash_message('alert', 'Failed to delete user');
        } else if ($result == 0) {
            add_flash_message('info', 'User not found or already deleted');
        } else {
            add_flash_message('info', 'User deleted successfully');
        }
    }
}</code>
<code class="php">// Model
public function delete($user_id)
{
    $this->db->delete('user_table', ['user_id' => $user_id]);
    return $this->db->affected_rows();
}</code>

其他注意事項:

  • 其他注意事項:
  • 如提供的解決方案中所述,建議在控制器和模型中都包含安全檢查,以防止未經授權的行為存取或惡意資料輸入。
在系統中保留更改歷史記錄以追蹤對資料庫記錄所做的更改是有益的。 對於複雜的資料庫操作,請考慮使用 CodeIgniter 的 ActiveRecord 模式,它提供了更結構化的資料庫操作方法。

以上是如何可靠地檢測 CodeIgniter 中建立、更新或刪除查詢是否成功?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn