我有以下代码:
[...]
// 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并且仍然没有运气!值得一试。
答案 0 :(得分:0)
数据库在搜索时应该不区分大小写,对吗?
是
我做错了什么?
实际上没有人知道。它可以是任何 看,你是通过间接后果来判断的。认证失败可能是由多个问题引起的,不一定与编码有关。
调试代码可以更加确定地运行针对2个常量名称的两个直接查询。
这应该不是问题,但要确保你正在运行
$mysqli->set_charset('utf8');
连接后。