区分大小写的查询

时间:2012-05-20 06:44:47

标签: php mysql

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

登录表单脚本:

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

5 个答案:

答案 0 :(得分:2)

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

如果您希望此表格上的所有查询都区分大小写,则应考虑将排序规则更改为@Kolink suggested

答案 1 :(得分:1)

如果您的大写字母应该是小写的话,您是否希望它不会让您登录?

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

答案 2 :(得分:0)

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

在MySQL中你可以看到使用编码_ci,其中meanes case insensetive。如果需要,请尝试一些_bin或_cs格式。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

使用COLLATE进行大小写敏感。您可以在此链接中看到示例 http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html