我目前正在尝试开始使用MySQLi而不是MySQL,但由于某种原因,我不明白这是在改变密码的第一部分,但随后失败的错误消息。谁能告诉我为什么?干杯
$sql1 = <<<SQL
SELECT *
FROM Users
WHERE UserID = '$UserID'
&& Password = '$hashedPW'
SQL;
if ($db->query($sql1)) {
$sql2 = $db->query("UPDATE Users SET Password = '$NEWhashedPW' WHERE UserID=$UserID");
if($db->affected_rows === 0) { echo $_SESSION['changepass'] = 'error'; header('Location:'.$_SERVER["HTTP_REFERER"]);
} else {
$_SESSION['changepass'] = 'success'; header('Location:'.$_SERVER["HTTP_REFERER"]);
}
} else {
echo 'error';
}
$result1->free();
$db->close();
答案 0 :(得分:0)
问题,如果只返回1个结果,为什么要循环访问数据?
$sql1 = "SELECT * FROM `Users` WHERE `UserID` = ".$UserID." AND `Password` = '".$hashedPW."'";
$result = $db->query($sql1);
if($db->num_rows($result)) { // Assuming you have a num_rows() function
$db->query("UPDATE `Users` SET `Password` = '".$NEWhashedPW."' WHERE `UserID` = ".$UserID);
$_SESSION['changepass'] = !$db->affected_rows() ? 'error' : 'success';
header('Location:'.$_SERVER["HTTP_REFERER"]);
} else
echo "User not found";
$result1->free();
$db->close();
这也假设你的query()函数具有某种形式的调试能力并且你有一个num_rows()函数 如果没有,请写一个!
num_rows()函数应该与此类似(程序样式):
function num_rows($res) {
return mysqli_num_rows($res);
}
简单地将其打包到您的数据库类中,应该好好去 可能需要编辑,我不知道您的数据库类是如何设置的