ホームページ >バックエンド開発 >PHPチュートリアル >MySQLi プリペアドステートメントで動的 LIKE 条件を安全に構築するにはどうすればよいですか?

MySQLi プリペアドステートメントで動的 LIKE 条件を安全に構築するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-17 18:24:11849ブラウズ

How to Securely Build Dynamic LIKE Conditions in MySQLi Prepared Statements?

mysqli プリペアド ステートメントとして動的 LIKE 条件を使用した SELECT クエリを構築する

ユーザー入力を使用する場合、プリペアド ステートメントは SQL を安全に実行する方法を提供しますクエリ。ユーザー入力に基づいて動的な LIKE 条件の数を処理するには、カスタム アプローチが必要です。

問題

指定されたコードは、変数を使用して準備されたステートメントを作成することを目的としています。 LIKE 条件の数。ただし、% 文字がパラメータの周囲ではなくプレースホルダの周囲に配置されているというエラーが発生します。

解決策

問題を修正するには、% 文字をラップする必要があります。構成変数内のパラメータ。変更されたコードは次のとおりです。

foreach ($search_exploded as $search_each) {
    $x++;
    if ($x == 1) {
        $construct .= "name LIKE ?%";  // % now wraps the parameter
    } else {
        $construct .= " or name LIKE ?%";  // % now wraps the parameter
    }
}

これにより、次のような構成文字列が生成されます。

name LIKE %?% or name LIKE %?% or ...

追加の機能拡張

提供されるPHP スニペットは、手続き型構文の代わりにオブジェクト指向の mysqli を利用します。さらに、このソリューションでは動的な WHERE 句の式とデータ型が確実に対応され、条件が存在しない場合に準備されたステートメントが不要になります。

結論

次の手順に従います。を使用すると、mysqli プリペアド ステートメントで動的な LIKE 条件を効果的に構築でき、SQL クエリ処理機能が大幅に強化されます。

以上がMySQLi プリペアドステートメントで動的 LIKE 条件を安全に構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。