PHP MySQL 更新语句失败

标签 php mysql sql-update

是的,我知道有针对 PHP MySQL 更新语句的答案,但是还没有一个能解决问题。我的重置 PHP 文件使用 bind_param 或串联变量准备好查询。它在重定向到 reset_success 页面时也执行得很好。然而,数据库记录没有改变。我已确认该网站正在使用的用户具有更新权限。我什至尝试转义 password 因为它是保留字的小写版本,没有任何效果。 apache2 错误日志也没有显示任何错误,所以没有帮助。

代码如下:

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();
    }
}

任何见解将不胜感激!

最佳答案

好的,它正在运行。我需要在函数文件中额外调用 session_start(),即使 reset_password.php 没有重定向($_SERVER['PHP_SELF'])。注册页面及其以相同方式运行的相应功能文件不需要这样做。我仍然不清楚为什么在引用者本身而不是重定向时再次需要它。

关于PHP MySQL 更新语句失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37694621/

相关文章:

php - 使用 PHP 填充 Sh 脚本值

MySQL:您不能在 FROM 子句中指定要更新的目标表 'tasks'

mysql - 从sql中获取响应,将其存储在对象中并使用条件?

java - Hibernate 更新查询问题

PHP检查两个日期时间是否不在同一日历日

php - 从逗号分隔值 mysql 和数组中查找并选择

Java SQL从一个表动态更新另一个表而无需id

mysql - 将一列从一个表复制到另一个

php - Flex图像通过php到mysql blob

mysql - 避免在 SQL 语言中对数据做出与在域中相同的断言