在PHP / MySQL中不尊重大写

时间:2013-06-21 12:39:01

标签: php mysql

我遇到了PHP和MySQL的问题:

帐户有用户:

username: StAr
password: 4LasK4

可以登录:

username: star
password: 4lask4

不尊重大写字母。

可能是什么问题?

由于

3 个答案:

答案 0 :(得分:6)

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

alter table TableName modify username varchar(xx) collate utf8_bin,
    modify password varchar(xx) collate utf8_bin;

答案 1 :(得分:2)

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

alter table your_table modify username varchar(xx) collate utf8_bin

答案 2 :(得分: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性能问题。