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

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

Barbara Streisand
リリース: 2024-12-17 18:24:11
オリジナル
845 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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