プリペアド ステートメントとワイルドカードを使用した 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 サイトの他の関連記事を参照してください。