我正在编写一个 PHP 脚本来重置用户的密码。我有一个电子邮件和一个令牌检查设置,因此这两个必须在允许用户重置之前有效。到目前为止,一切正常,直到我将密码插入数据库。这是我的 PDO 的代码(我在这些部分破坏了 SQL 查询,因此更容易浏览):
try {
$sql = "UPDATE users
SET password=:password, sessionTime=:sessionTime, sessionID=:sessionID
WHERE sessionID=:sessionID";
$update = $con->prepare($sql);
$update->bindValue("password", hash("sha256", $password . $salt), PDO::PARAM_STR);
$update->bindValue("sessionID", "0", PDO::PARAM_STR );
$update->bindValue("sessionTime", "0", PDO::PARAM_STR );
$update->execute();
echo "<br /> Successfully updated the password!";
} catch(PDOException $e) {
throw new Exception('something went wrong with the password reset', 0, $e);
}
$salt
并$password
在此之前定义,当我运行脚本时,它会输出Successfully updated the password!
,但是我的数据库中没有任何变化。当我将查询复制并粘贴到 phpMyAdmin 并将:name
参数更改为实际字符串时,它可以完美运行(更新我的数据库)并且不会返回任何错误 - 而且,我没有得到任何内容php_error.log
,所以我不太确定为什么这不起作用。
任何帮助将不胜感激,谢谢。