PHP else Statement


PHP else Statement

这段代码的第一部分工作得很好,当if ($row[password] == $password_hash)false时,我似乎无法让else语句工作。我确信我只是在某个地方出了个小错误,但就是找不到。

list ($sessionname) = checkuser();
if (isset($_POST['save'])){
connect();
$currentpass = sha1($_POST['password']);
$newpass = sha1($_POST['password1']);
$sql = "SELECT password FROM members WHERE username = '$sessionname'";
    $result=mysql_query($sql);
    $row = mysql_fetch_array($result);
        if ($row['password'] == $currentpass)
    $query = mysql_query("UPDATE members SET password = '$newpass' WHERE username = '$_SESSION[username]'");
            $updated = "Your password has been updated";
               print_r($row);
        }else{
    $a = "Passwords do not match";
    return $b;
        }
}

if语句后缺少一个左花括号。

if ($row['password'] == $currentpass) {
    $query = mysql_query("UPDATE members SET password = '$newpass' WHERE username = '$_SESSION[username]'");
    $updated = "Your password has been updated";
    print_r($row);
}else{
    $a = "Passwords do not match";
    return $b;
}

注意if ($row['password'] == $currentpass)

后面的{

如果没有大括号(并且没有错误报告),它将跳过查询并显示字符串"您的密码已被更新"。这就是为什么密码不能在数据库中更改,以及为什么其他方法似乎都不起作用的原因。

By the way:

ini_set('display_errors',1); 
error_reporting(E_ALL);

将打开错误报告

确保 MySQL是返回一个结果集,通过使用print_r($row);调试代码。

if ($row['password'] == $password_hash){  

提示:您应该在字符串键周围使用引号。如果省略引号,PHP会认为它是常量。

阅读:"为什么$foo[bar]是错的"。

你的问题不太清楚。运行代码时会发生什么?您是否尝试检查$password_hash$row[password]在条件之前是什么?

我很确定问题不在于缺少引号,我刚刚测试了它,它工作得很好,但它们应该在那里。