【发布时间】:2010-11-16 23:24:14
【问题描述】:
当用户在我的网站上进行搜索时,我会抓取 get 请求并对它进行 mysql 查询。我的原始代码看起来像这样:$q = $_GET['q'];。
现在 urldecode 正在为我添加斜杠,但我决定尝试 filter_var 和 santize 字符串过滤器。
这是我使用$q = urldecode($_GET['q']);时的sql:
SELECT * FROM item WHERE title LIKE '%you\'re%' OR description LIKE '%you\'re%' ORDER BY date DESC
这是我使用时的 sql:q = filter_var(urldecode($_GET['q']), FILTER_SANITIZE_STRING);
SELECT * FROM item WHERE title LIKE '%you\'re%' OR description LIKE '%you\'re%' ORDER BY date DESC
sql 是完全一样的,但是我得到不同的结果,我不知道为什么?仅使用 urldecode 从数据库返回正确的结果,但 filter_var 什么也不返回(即使 sql 相同)。
我想我的问题是,清理和搜索查询字符串的最佳方法是什么?
【问题讨论】:
-
使用带有参数化查询的 PDO - php.net/manual/en/book.pdo.php