从MySQL移动到MySQLi消息没有显示没有结果

时间:2014-01-17 07:29:48

标签: php mysql mysqli

我目前正在尝试开始使用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();

1 个答案:

答案 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);
}

简单地将其打包到您的数据库类中,应该好好去 可能需要编辑,我不知道您的数据库类是如何设置的