php中不区分大小写的搜索

php中不区分大小写的搜索,php,mysqli,Php,Mysqli,我在我的网站上使用了一些搜索脚本 发布搜索表单后,我得到以下变量: $var = $_GET[$q] ; $trimmed = trim($var); 然后我尝试在数据库中搜索: $query = "select * from test where acc like \"%$trimmed%\""; $numresults=mysql_query($query); $numrows=mysql_num_rows($numresults); ....... 我试着搜索“测试”这个词。(在我

我在我的网站上使用了一些搜索脚本

发布搜索表单后,我得到以下变量:

$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”不区分大小写

你能帮我修改代码吗,不区分大小写搜索

谢谢。

默认字符集和排序规则是latin1和latin1_swedish_ci,因此默认情况下非二进制字符串比较不区分大小写。这意味着,如果使用col_name(如“a%”)进行搜索,则会得到以a或a开头的所有列值。要使此搜索区分大小写,请确保其中一个操作数具有区分大小写或二进制排序规则。例如,如果要比较同时具有拉丁字符集的列和字符串,可以使用COLLATE运算符使任一操作数具有拉丁字符集或拉丁字符集排序规则:


默认字符集和排序规则是latin1和latin1_swedish_ci,因此默认情况下非二进制字符串比较不区分大小写。这意味着,如果使用col_name(如“a%”)进行搜索,则会得到以a或a开头的所有列值。要使此搜索区分大小写,请确保其中一个操作数具有区分大小写或二进制排序规则。例如,如果要比较同时具有拉丁字符集的列和字符串,则可以使用COLLATE运算符使任一操作数具有拉丁1_general_cs或拉丁1_bin排序规则

区分大小写取决于表的排序规则:

显示创建表测试


这是检查表是否区分大小写的开始。关于示例代码的不安全性,我将留给其他人反复讨论。

区分大小写取决于表的排序规则:

显示创建表测试

这是检查表是否区分大小写的开始。我将把它留给其他人来讨论您的示例代码有多不安全。

这可能会对您有所帮助

顺便说一下,您应该使用mysqli对象在PHP中执行SQL请求。

这可能会对您有所帮助


顺便说一下,您应该使用mysqli对象在PHP中执行SQL请求。

$var=$\u GET[$q]-->确保检查注入攻击的输入数据。acc字段的排序规则是什么?@Holian-请注意KB22的评论,如果您不知道他在说什么,请阅读。$var=$\u GET[$q]-->确保检查注入攻击的输入数据。acc字段的排序规则是什么?@Holian-请注意KB22的评论,如果不知道他在说什么,请阅读。