ホームページ > バックエンド開発 > PHPチュートリアル > SQL の準備されたステートメントで LIKE '%{Var}%' を安全に使用するにはどうすればよいですか?

SQL の準備されたステートメントで LIKE '%{Var}%' を安全に使用するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-15 12:02:11
オリジナル
543 人が閲覧しました

How Can I Safely Use LIKE '%{Var}%' with Prepared Statements in SQL?

LIKE '%{Var}%' を使用したプリペアド ステートメントを効果的に利用する

SQL クエリでサニタイズされたユーザー入力を使用する場合は、次のことをお勧めします。 SQL インジェクション攻撃のリスクを軽減するために準備されたステートメントを使用します。ただし、プリペアド ステートメントで LIKE '%{Var}%' パターンを使用すると、問題が発生する可能性があります。

間違ったアプローチ:

次の構文ではエラーが生成されます:

$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{?}%\' ';
ログイン後にコピー
$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% ';
ログイン後にコピー

正解アプローチ:

プリペアド ステートメントで LIKE '%{Var}%' を正しく使用するには、次の手順に従います:

  1. LIKE パターンを保持する文字列変数を作成します:
$likeVar = "%" . $ yourParam . "%";
ログイン後にコピー
  1. を使用してクエリを準備します。プレースホルダー:
$ stmt = $ mysqli -> prepare('SELECT * FROM REGISTRY WHERE name LIKE ?');
ログイン後にコピー
  1. LIKE 変数をプレースホルダーにバインドします:
$stmt -> bind_param('s', $likeVar);
ログイン後にコピー
  1. クエリ:
$stmt -> execute();
ログイン後にコピー

説明:

  • $likeVar: この変数には、ユーザー指定のパラメーターの接頭辞と接尾辞が付いている LIKE パターンが含まれています。ワイルドカード。
  • prepare() と query(): prepare() query() は、クエリを直接実行します。
  • bind_param(): このメソッドは、準備されたステートメントのパラメーターをそれぞれの変数値に関連付けます。この場合、プレースホルダー (?) は $likeVar にバインドされています。
  • execute(): パラメーターがバインドされると、execute() は指定されたパラメーターを使用してクエリを実行します。

これらの手順に従うことで、セキュリティのベスト プラクティスを守りながら、SQL クエリで LIKE '%{Var}%' を安全に使用できます。

以上がSQL の準備されたステートメントで LIKE '%{Var}%' を安全に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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