0

我对 PHP 和 MySQL 有疑问:

有帐号的用户:

username: StAr
password: 4LasK4

可以登录:

username: star
password: 4lask4

不尊重大写字母。

可能是什么问题?

谢谢

4

3 回答 3

6

排序规则确定两个字符串是否相等。您应该将用户名和密码列的排序规则更改为区分大小写或二进制。例如:

alter table TableName modify username varchar(xx) collate utf8_bin,
    modify password varchar(xx) collate utf8_bin;
于 2013-06-21T12:43:32.957 回答
2

检查列定义并确保您的排序规则不区分大小写 (ci)。你可以试试这个:

alter table your_table modify username varchar(xx) collate utf8_bin
于 2013-06-21T12:43:26.457 回答
0

许多 MySQL 安装具有 utf8_general_ci 的默认排序规则设置。这使得这两个操作产生完全相同的结果。

 SELECT * from users WHERE name = 'StAr'
 SELECT * from users WHERE name = 'star'

您可以尝试更改数据库中名称列的排序规则。或者您可以使用这样的查询:

     SELECT * from users WHERE name = 'StAr' COLLATE utf8_bin

此 utf8_bin 排序规则比较精确相等。但是,如果将 COLLATE 放在查询中,则可能会禁用查询的索引并导致 MySQL 性能问题。

于 2013-06-21T12:45:35.127 回答