ホームページ  >  記事  >  バックエンド開発  >  MySQL でプリペアド ステートメントでワイルドカードを使用するにはどうすればよいですか?

MySQL でプリペアド ステートメントでワイルドカードを使用するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-28 09:46:02865ブラウズ

 How to Use Wildcards with Prepared Statements in MySQL?

プリペアド ステートメントとワイルドカードを使用した MySQL クエリの実行

プリペアド ステートメントを使用して SQL クエリを実行する場合、柔軟性を高めるためにワイルドカードを効果的に利用することが重要です。クエリの効率も向上します。プリペアド ステートメントは SQL インジェクションを防止することでセキュリティ上の利点を提供しますが、ワイルドカードを組み込む場合には特定の調整が必要になる場合があります。

特定のシナリオでは、プリペアド ステートメントを使用したクエリの実行:

SELECT * FROM `gc_users` WHERE `name` LIKE '%anyname%'

は最初に失敗しました。コードがパラメータをワイルドカードに直接バインドしようとしたためです。ただし、bindParam の代わりに bindingValue を使用することで、ワイルドカードで囲まれた $name 変数をバインドするという目的の機能を正常に実現できました。

$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name");
$stmt->bindValue(':name', '%' . $name . '%');
$stmt->execute();

または、bindParam を活用して、ワイルドカードを先頭に追加することもできます。以下に示す $name 変数:

$name = "%$name%";
$query = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` like :name");
$query->bindParam(':name', $name);
$query->execute();

以上がMySQL でプリペアド ステートメントでワイルドカードを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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