区分大小写的查询


Case-Sensitive Queries

我可以使用表单中的以下代码获取用户输入的名称(用户名(。所以我的问题是,如果我输入Shibbirbd(第一个字母是大写字母,但它shibbirbd在我的数据库中(,那么它就会成功进入用户登录面板!但这是错误的。为什么会这样?Mysql 数据库用户名为:shibbirbd

登录表单脚本:

$uname = mysql_real_escape_string(htmlspecialchars(trim($_POST['uname'])));
$pass = mysql_real_escape_string(htmlspecialchars(trim($_POST['pass'])));

您可以将WHERE子句更改为WHERE BINARY(WHERE BINARY uname = '$uname'(,以测试用户名的二进制值是否相等。

如果希望此表上的所有查询都区分大小写,则应考虑按照@Kolink建议更改排序规则。

你是说如果你有大写字母,而应该有小写字母,你希望它不会登录你吗?

在这种情况下,请将表的排序规则更改为区分大小写的内容,例如 utf8_bin

在大多数情况下,字符串不区分大小写。为什么用户名区分大小写很重要?

在MySQL中,您可以看到编码_ci这意味着大小写无意义。如果需要,请尝试一些_bin或_cs格式。

听起来列

排序规则不区分大小写,这是默认设置。尝试将其更改为区分大小写的排序规则,例如latine_general_cs

COLLATE用于区分大小写。您会看到此链接中的示例。
http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html