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