我遇到了PHP和MySQL的问题:
帐户有用户:
username: StAr
password: 4LasK4
可以登录:
username: star
password: 4lask4
不尊重大写字母。
可能是什么问题?
由于
答案 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性能问题。