【发布时间】:2009-10-08 09:06:00
【问题描述】:
我在我的网站中使用了一个小搜索脚本。
发布搜索表单后,我得到了这个变量:
$var = $_GET[$q] ;
$trimmed = trim($var);
然后我尝试在数据库中搜索:
$query = "select * from test where acc like \"%$trimmed%\"";
$numresults=mysql_query($query);
$numrows=mysql_num_rows($numresults);
.......
我尝试搜索“测试”这个词。 (在我的数据库中,我有一行带有“Test”字样。)但什么也没找到。如果我搜索“TEST”然后什么都没有。只有这样,如果我在数据库中准确搜索单词,我就会得到结果。 (测试)。
我在某处读到,“LIKE”不区分大小写。
你能帮我修改一下代码,搜索不区分大小写吗?
谢谢。
【问题讨论】:
-
$var = $_GET[$q] --> 确保检查输入数据是否存在注入攻击。
-
acc 字段的排序规则是什么?
-
@Holian - 请注意 KB22 的评论,如果您不知道他在说什么,请阅读 us2.php.net/manual/en/security.database.sql-injection.php。