MySQL SELECT查询是否不区分大小写?
我有一个带有方法帖子的表单,用户将根据品牌日期等过滤结果。 如果MySQL中的品牌名称使用非小写示例(samsung)存储,并且搜索输入字段使用大写示例(samsung)填充,它仍然会给我正确的结果还是会导致错误MySQL SELECT查询是否不区分大小写?,mysql,case-sensitive,Mysql,Case Sensitive,我有一个带有方法帖子的表单,用户将根据品牌日期等过滤结果。 如果MySQL中的品牌名称使用非小写示例(samsung)存储,并且搜索输入字段使用大写示例(samsung)填充,它仍然会给我正确的结果还是会导致错误 $branded=mysqli_real_escape_string($db, $_GET['brand']); // USER TYPED SAMSUNG } $query= "SELECT * FROM `brands` WHERE `brand` = '$branded' LIM
$branded=mysqli_real_escape_string($db, $_GET['brand']); // USER TYPED SAMSUNG
}
$query= "SELECT * FROM `brands` WHERE `brand` = '$branded' LIMIT 1"; // stored as samsung
大多数MySQL排序规则不区分大小写,除非进行二进制比较。在您的查询案例中,不应更改任何内容。但是,以下查询将“samsung”和“samsung”标记为不同:
$branded=mysqli_real_escape_string($db, $_GET['brand']); // USER TYPED SAMSUNG
}
$query= "SELECT * FROM `brands` WHERE BINARY `brand` = '$branded' LIMIT 1"; // stored as samsung
您必须检查排序规则以确定它是否区分大小写,但最简单的方法就是测试它
将此链接用作参考:
语言环境是“拉丁语、瑞典语”
因为它以“ci”结尾,所以它必须是case-in敏感的。我不知道它怎么会给出错误。它不会返回任何匹配项。但这取决于您使用的排序规则。有些区分大小写,有些则不区分大小写。如果您使用区分大小写,那么在运行查询之前,您可以始终在php中降低用户文本的大小写。为什么不测试一下,看看会发生什么?当使用
mysqli
时,您应该使用参数化查询,并将用户数据添加到查询中。不要使用字符串插值来完成此操作,因为这样会创建严重的错误。手动调用转义函数不仅工作量大,而且可能会犯严重错误。description`brands`
将回答您的问题。如果结果的COLLATE
指令以\u ci
结束,则它不区分大小写。它表示latin1\u swedish\u ci