是的,我知道PHP MySQL更新语句有答案,但是他们都没有解决这个问题。我的重置PHP文件使用bind_param或连接变量准备好查询。它也会在重定向到reset_success页面时正常执行。但数据库记录保持不变。我已确认该网站正在使用的用户具有更新权限。我甚至试过逃避password
,因为它是一个保留字的小写版本,没有任何工作。 apache2错误日志也显示没有错误,所以没有帮助。PHP MySQL更新语句失败
的代码如下:
if (empty($error_msg)) {
// Create a random salt
$random_salt = hash('sha512', uniqid(openssl_random_pseudo_bytes(16), TRUE));
// Create salted password
$password = hash('sha512', $password . $random_salt);
// Prepare the update statement
//if ($update_stmt = $mysqli->prepare("UPDATE members SET password = ?, salt = ? WHERE email = ?")) {
if ($update_stmt = $mysqli->prepare("UPDATE members SET password = '".$password."', salt = '".$random_salt."' WHERE email = '".$_SESSION['email']."';")) {
// Binding params
//$update_stmt->bind_param('sss', $password, $random_salt, $_SESSION['email']);
// Execute the update statement
if ($update_stmt->execute()) {
header('Location: reset_success.php');
exit();
}
else{
header('Location: error.php?err=Reset failure: UPDATE');
exit();
}
}
else{
header('Location: error.php?err=Reset failure: PREPARE');
exit();
}
}
任何有识之士将不胜感激!
你建议立即进行删除看看[预处理语句(HTTP:// PHP。净/手动/ EN/pdo.prepared-statements.php)。它比逃避的麻烦少得多,而且最终的代码也会保护你免受SQL注入。 – Mureinik
我以为这就是我正在做的$ mysqli-> prepare? –
你能否确保'$ _SESSION ['email']'保持正确的值? – Tushar