为什么我的代码会一直返回0?

时间:2016-10-17 18:49:46

标签: php oop mysqli

使用这个PHP MYSQLi脚本遇到一些麻烦 - 每当我运行该函数时,我总是得到一个返回值0,即使我满足条件返回另一个值。看来我的代码无法从表中收集数据,但是我找不到原因。这是我的代码:

function updatePassword($username, $oldPass, $newPass, $newPassConf, $mysqli){
    if($stmt = $mysqli->prepare("SELECT password FROM members WHERE email = ?")){
        $username = 'user'; //Temp value just to test the statement
        $stmt->bind_param('s', $username);
        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($dbOldPass);
        $stmt->fetch();

    }
    else{
        return 0; // Failed to retrieve pw from DB
    }
    if($dbOldPass == $oldPass){
        if($newPass == $newPassConf){
            if($stmt = $mysqli->prepare('UPDATE members SET password=? WHERE username=?')){
                $stmt->bind_param('ss', $newPass, $username);
                $stmt->execute();
                return 1; // Success
            }
        }else{
            return 2; // Password and PW confirmation are wrong
        }
    }
}

提前感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:-1)

在您的情况下,返回码0表示它无法创建预准备语句。

所以,你的$ mysqli对象没有正确连接(尝试检查$mysqli->error)或者你遇到了将资源与false进行比较的常见错误,在这种情况下,请尝试使用:

if( ($stmt = $mysqli->prepare("SELECT password FROM members WHERE email = ?")) !== FALSE )