Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL SELECT查询是否不区分大小写?_Mysql_Case Sensitive - Fatal编程技术网

MySQL SELECT查询是否不区分大小写?

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

我有一个带有方法帖子的表单,用户将根据品牌日期等过滤结果。 如果MySQL中的品牌名称使用非小写示例(samsung)存储,并且搜索输入字段使用大写示例(samsung)填充,它仍然会给我正确的结果还是会导致错误

$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