此代码可以在我的计算机上运行,但是当我在网络托管服务商的服务器上运行它时,却无法运行。即使我使用了正确的密码,输出也是“密码或电子邮件不正确”。我以为我的密码有误,但代码不会在 while 循环的顶部输出 $r['email'] 或 $r['passwordHash'] 。如果我在 $sql 上使用 mysql_result,我会取出数据,因此 mysql_fetch_array 一定会发生一些奇怪的事情。我是否在这里遗漏了一些东西,或者这更可能是我应该与主机的支持人员解决的独特问题?
$query = "SELECT * FROM users WHERE user='$email'";
$sql = mysql_query($query);
while($r = mysql_fetch_array($sql)) {
echo $r['email'];
echo $r['passwordhash'];
if($passwordHash == $r['passwordhash']) {
$_SESSION['user_id'] = $email;
echo "started session";
}
else {
echo "Incorrect password or email";
}
}
最佳答案
使用$sql = mysql_query($query) or die (mysql_error())
来检查查询是否有问题。
或者,您可以尝试 mysql_fetch_assoc
(因为我看到您最常使用关联数组),以排除 mysql_fetch_array 可能的“错误”(我对此表示怀疑,但您可以尝试一下)。
并检查$email
不为空。如果它通过清理函数传递(在放入查询之前应该如此),请查看该函数是否实际上返回了一个值,或者只是 NULL 或一个空字符串。
顺便说一句,你为什么要使用 while 循环?您是否应该使用同一电子邮件地址获取多个记录(和密码)?
关于php - mysql_fetch_array 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4971744/