utf8_unicode_ci没有返回不区分大小写的结果?

时间:2013-06-18 05:55:38

标签: php mysql mysqli phpmyadmin

我有以下代码:

[...]

// Escape values
$username = $mysqli->real_escape_string($username);
$password = $mysqli->real_escape_string($password);

// Create the SQL string
$sql = "SELECT * 
FROM users 
WHERE username = '$username' AND password = '$password';";

// Run query
if ($result = $mysqli->query($sql)) {

[...]

好吧,我有一个用户名ChrisB5。 ChrisB5使用正确的密码正确验证,但是...... chrisb5验证失败。我有utf8_unicode_ci,所以...数据库在搜索时应该不区分大小写,对吗?如果有帮助,我的数据库类型是MyISAM。我做错了什么?...谢谢!

编辑:
我在phpmyadmin中运行了以下代码并且它有效...但是mysqli与PHP无法正常工作!这对我来说很奇怪......

SELECT *
来自users
在哪里username ='chrisb5'
限制0,30

这回复了ChrisB5的记录。

我还发现我的服务器默认为latin1 ...但我按照建议将其修改为默认为utf8并且仍然没有运气!值得一试。

1 个答案:

答案 0 :(得分:0)

  

数据库在搜索时应该不区分大小写,对吗?

  

我做错了什么?

实际上没有人知道。它可以是任何 看,你是通过间接后果来判断的。认证失败可能是由多个问题引起的,不一定与编码有关。

调试代码可以更加确定地运行针对2个常量名称的两个直接查询。

这应该不是问题,但要确保你正在运行

$mysqli->set_charset('utf8');
连接后