使用这个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
}
}
}
提前感谢您提供的任何帮助!
答案 0 :(得分:-1)
在您的情况下,返回码0表示它无法创建预准备语句。
所以,你的$ mysqli对象没有正确连接(尝试检查$mysqli->error
)或者你遇到了将资源与false进行比较的常见错误,在这种情况下,请尝试使用:
if( ($stmt = $mysqli->prepare("SELECT password FROM members WHERE email = ?")) !== FALSE )