PDO は、バインドされたパラメーターを使用して SQL クエリを実行する安全な方法を提供し、SQL インジェクションの脆弱性を防ぎます。 % などのワイルドカード文字を含む LIKE パラメーターをバインドする場合、混乱が生じる可能性があります。
以下のクエリでは、PDO:
select wrd from tablename WHERE wrd LIKE '$partial%'
を使用して変数 $partial% をバインドしようとしています。 PDO がそのようなバインディングをどのように処理するかを理解することが重要です。正しいアプローチは、特定の要件によって異なります。
はい、これは有効なオプションです:
select wrd from tablename WHERE wrd LIKE ':partial%'
ここで、:partial は $partial="somet" にバインドされます。
次のアプローチも使用できます:
select wrd from tablename WHERE wrd LIKE ':partial'
ここで、:partial は $partial="somet%" にバインドされています。
必要に応じて、MySQL クエリ内で文字列の連結を実行できます。それ自体:
SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
単語の一部に %、_、または などの特殊文字が含まれている場合は、パラメーターをバインドする前に手動で特殊文字をエスケープする必要があります。次のコードはこれを示しています:
$stmt= $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'"); $escaped= str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var); $stmt->bindParam(':term', $escaped);
以上がPDO でワイルドカードを使用して LIKE パラメータを安全にバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。