バインドされたパラメーターを複数回使用する
データベース プログラミングでは、SQL インジェクション攻撃を防ぐためにバインドされたパラメーターを使用することが重要です。ただし、開発者は、準備されたステートメント内で同じパラメーターを複数回使用しようとすると、問題が発生することがよくあります。
元の問題ステートメント
元の投稿では、ユーザーは、UNION SELECT を利用して、それぞれが異なる検索条件を持つ異なるテーブルからデータをフェッチする検索エンジンを実装したいと考えています。クエリには、プリペアド ステートメントにバインドされている「:term」パラメータのインスタンスが複数含まれています。
ソリューション: ユーザー定義変数
提供されるソリューションは、バインドされたパラメーターを複数回使用するための代替アプローチ。 MySQL ユーザー定義変数を利用することで、開発者はコードを簡素化し、読みやすさを向上させることができます。
コード例
$sql = "SET @term = :term"; $stmt = $dbh->prepare($sql); $stmt->bindValue(":term", "%$term%", PDO::PARAM_STR); $stmt->execute(); $sql = "SELECT ... FROM table WHERE name LIKE @term OR number LIKE @term"; $stmt = $dbh->prepare($sql); $stmt->execute(); $stmt->fetchAll();
利点
欠点
以上が準備されたステートメントでバインドされたパラメーターを複数回再利用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。