[英]should I escape wildcards in a “LIKE” sql query?
假設我在這樣的變量中存儲了一個LIKE
sql語句:
$movie_title = $_POST['movie_title'];
$query= "SELECT movie FROM movies WHERE title LIKE '%" . $movie_title . "%'";
我可以通過轉義通配符%
和_
防止什么情況的sql注入攻擊?
使用PDO:
$pdo = new PDO(/* db info */);
$original = $_POST['movie_title'];
$wildcarded = '%'.$original.'%';
$stmt = $pdo->prepare('SELECT movie FROM movies WHERE title LIKE :var');
$stmt->bindParam(':var', $wildcarded);
$stmt->execute();
// fetching and stuff...
很簡單:
編寫這樣的函數:
function sqlwildcardesc($x){
return str_replace(array("%", "_"), array("\\%", "\\_"), mysql_real_escape_string($x));
}
現在您的查詢:
$query= "SELECT movie FROM movies WHERE title LIKE '%".sqlwildcardesc($movie_title)."%'";
這應該工作! 我在自己的項目中測試過它! 玩得開心 ;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.