php - MySQL PHP - 无法向表插入/更新新值

标签 php mysql database change-password

我的网站上有一个登录系统,我正在尝试创建密码重置。我的注册或登录代码没有问题,但密码更改代码不起作用。这是我尝试过的两个示例(实际代码)

<?php
    require_once("config.php");
    session_start();
    if(isset($_POST['submit'])) {

        include_once 'config.php';

        $password = mysqli_real_escape_string($con, $_POST['password']);
        $password1 = mysqli_real_escape_string($con, $_POST['uc_pass1']);
        $password2 = mysqli_real_escape_string($con, $_POST['uc_pass2']);
        $uid = $_SESSION['s_id'];

        if ($password1 != $password2 || empty($password1) || empty($password2)) {
            header("Location: ../user-conf.php?pass=notmatching");
            exit();
        } else {
            $sql = "SELECT password FROM userdb WHERE username='$uid'";
            $result = mysqli_query($con, $sql);
            $resultCheck = mysqli_num_rows($result);

            if (!$resultCheck > 0) {
                header("Location: ../user-conf.php?error");
                exit();
            } else {
                $hashedPwdCheck = password_verify($password, $_SESSION['s_pw']);
                if ($hashedPwdCheck == false) {
                    header("Location: ../user-conf.php?error");
                    exit();
                } elseif ($hashedPwdCheck == true) {
                    $hashedPwd2 = password_hash($password1, PASSWORD_DEFAULT);
                    $sql2 = "INSERT INTO userdb (password) VALUES($hashedPwd2) WHERE username=$uid";
                    mysqli_query($con, $sql2);
                    header("Location: ../user-conf.php?pass=successfull");
                    exit();
                }
            }
        }
    } else {
        header("Location: ../login.php?nologon");
    }
?>

另一张在下面。

<?php
    require_once("config.php");
    session_start();
    if(isset($_POST['submit'])) {

        include_once 'config.php';

        $password = mysqli_real_escape_string($con, $_POST['password']);
        $password1 = mysqli_real_escape_string($con, $_POST['uc_pass1']);
        $password2 = mysqli_real_escape_string($con, $_POST['uc_pass2']);
        $uid = $_SESSION['s_id'];

        if ($password1 != $password2 || empty($password1) || empty($password2)) {
            header("Location: ../user-conf.php?pass=notmatching");
            exit();
        } else {

            $hashedPwdCheck = password_verify($password, $_SESSION['s_pw']);
            if ($hashedPwdCheck == false) {
                header("Location: ../user-conf.php?error");
                exit();
            } elseif ($hashedPwdCheck == true) {
                $hashedPwd = password_hash($password1, PASSWORD_DEFAULT);
                $sql = "INSERT INTO userdb (password) VALUES($hashedPwd) WHERE username=$uid";
                mysqli_query($con, $sql);
                header("Location: ../user-conf.php?pass=successfull");
                exit();
            }
        }
    } else {
        header("Location: ../login.php?nologon");
    }
?>

我还尝试过 UPDATE 语法。但是,它似乎并没有用新密码更改旧密码。很高兴知道我做错了什么,所以如果您知道,请告诉我,我们将不胜感激! :)

最佳答案

99% 确信:

"INSERT INTO userdb (password) VALUES($hashedPwd2) WHERE username=$uid"

应该是:

"UPDATE userdb SET password = '$hashedPwd2' WHERE username='$uid'"

您的 PHP 变量缺少引号,INSERT 应该是 UPDATE

关于php - MySQL PHP - 无法向表插入/更新新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46465469/

相关文章:

php - 如何配置PHPunit测试结果输出到HTML文件?

c# - Convert.ToString 返回 `System.Byte[]` 而不是实际数据,因为 GROUP_CONCAT 返回 BLOB

mysql - phpMyAdmin - 错误缺少 json 扩展

MySQL 问题 - 查找某人评分为 5 星而其他人评分少于 3 星的每部电影的标题和年份

mysql - 如何设计一个可以添加 Unresolved 项目数的数据库

database - Firebase 数据库结构

PHP - 新的 Imagick 更改图像的 md5()

Javascript SELECT BOX 选项依赖于所选的其他 SELECT BOX 选项

php - 是否可以?!给 Paypal 动态下拉菜单项一个动态名称

mysql - 如何为子查询添加值?