ホームページ > バックエンド開発 > PHPチュートリアル > CodeIgniter で作成、更新、または削除クエリの成功を確実に検出するにはどうすればよいですか?

CodeIgniter で作成、更新、または削除クエリの成功を確実に検出するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-10-31 04:13:30
オリジナル
366 人が閲覧しました

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

CodeIgniter での作成、更新、または削除クエリの成功の検出

CodeIgniter でデータベース操作を実行する場合、それらのクエリを検証することが重要です。成功。これを行わないと、データの不整合が発生したり、ユーザーに誤った結果が表示されたりする可能性があります。

間違ったアプローチ:

提供されたコントローラー メソッドは、ゼロ以外の値が返されると想定しています。 update() モデル メソッドの値は成功を示します。ただし、クエリが行の更新に失敗した場合でもモデルがゼロ以外の値を返す可能性があるため、これは信頼できるアプローチではありません。

正しいアプローチ:

適切に行うデータベース操作の成功を検出するには、次の手順を使用することをお勧めします:

コントローラー:

  • URL ではなく POST 経由で入力データを安全に受信します。
  • 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート