我在我的网站上使用了一个小搜索脚本。
在发布搜索表单后,我得到了这个变量:
$var = $_GET[$q] ;
$trimmed = trim($var);
然后我尝试在数据库中搜索:
$query = "select * from test where acc like \"%$trimmed%\"";
$numresults=mysql_query($query);
$numrows=mysql_num_rows($numresults);
.......
我尝试搜索“测试”字样。 (在我的数据库中,我有一行“测试”一词。)但一无所获。如果我搜索“TEST”然后什么都没有。只有这样才能得到结果,如果我在数据库中搜索完全单词。 (试验)。
我在某处读到,“LIKE”是不敏感的。
你能帮助我修改代码,搜索案例不敏感吗?
谢谢。
答案 0 :(得分:2)
默认字符集和排序规则是latin1和latin1_swedish_ci,因此非二进制字符串比较默认情况下不区分大小写。这意味着如果使用col_name LIKE'a%'进行搜索,则会获得以A或a开头的所有列值。要使此搜索区分大小写,请确保其中一个操作数具有区分大小写或二进制排序规则。例如,如果要比较具有latin1字符集的列和字符串,则可以使用COLLATE运算符使任一操作数具有latin1_general_cs或latin1_bin排序规则
答案 1 :(得分:1)
区分大小写取决于表的整理:
SHOW CREATE TABLE test
这是一个开始 - 检查你的表是否区分大小写。我会把它留给其他人来了解你的示例代码有多不安全。
答案 2 :(得分:1)
这可以帮到你。
http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html
顺便说一下,你应该使用mysqli对象在PHP中执行SQL请求。