首页 > 解决方案 > 更新 SQL 变量的问题

问题描述

我一直在尝试更新我的 SQL 数据库,该数据库只需更新密码即可 100% 工作。一旦我尝试更新数据库中的另一个变量,它只会刷新页面!我已经尝试并查看了几个小时的示例,任何帮助将不胜感激。我相信错误出现在我的 SQL 代码中,以及将变量绑定到准备好的语句行。除此之外,我不知道从哪里开始。所以任何方向都会有所帮助!

PHP:

    <?php
// Initialize the session
session_start();

// Check if the user is logged in, if not then redirect to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: login.php");
    exit;
}

// Include config file
require_once "config.php";

// Define variables and initialize with empty values
$new_password = $confirm_password = "";
$new_password_err = $confirm_password_err = "";
$new_discordusername = $_SESSION["DiscordUsername"];
$new_steamid = $_SESSION["steamid"];

// Processing form data when form is submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){

    // Validate new password
    if(empty(trim($_POST["new_password"]))){
        $new_password_err = "Please enter the new password.";     
    } elseif(strlen(trim($_POST["new_password"])) < 6){
        $new_password_err = "Password must have atleast 6 characters.";
    } else{
        $new_password = trim($_POST["new_password"]);
        $new_discordusername = trim($_POST["new_discord"]);
        $new_steamid = trim($_POST["new_steam"]);
    }

    // Validate confirm password
    if(empty(trim($_POST["confirm_password"]))){
        $confirm_password_err = "Please confirm the password.";
    } else{
        $confirm_password = trim($_POST["confirm_password"]);
        if(empty($new_password_err) && ($new_password != $confirm_password)){
            $confirm_password_err = "Password did not match.";
        }
    }

    // Check input errors before updating the database
    if(empty($new_password_err) && empty($confirm_password_err)){
        // Prepare an update statement
        $sql = "UPDATE users SET 
                password = ?,
                steamid = ? 
                WHERE id = ?";

        if($stmt = mysqli_prepare($link, $sql)){
        // Set parameters
            $param_password = password_hash($new_password, PASSWORD_DEFAULT);
            $param_id = $_SESSION["id"];
            $param_discordusername = $new_discordusername;
            $param_steamid = $new_steamid;


            // Bind variables to the prepared statement as parameters
            mysqli_stmt_bind_param($stmt, "ssi", $param_password, $param_steamid, $param_id);



            // Attempt to execute the prepared statement
            if(mysqli_stmt_execute($stmt)){
                // Password updated successfully. Destroy the session, and redirect to login page
                session_destroy();
                header("location: login.php");
                exit();
            } else{
                echo "Oops! Something went wrong. Please try again later." + mysqli_error($link);

            }

            // Close statement
            mysqli_stmt_close($stmt);
        }
    }

    // Close connection
    mysqli_close($link);
}
?>

形式:

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post"> 
            <!--STEAM ID-->
            <div class="form-group ">
                <label>Steam ID:</label>
                <input type="text" name="new_steam" class="form-control" value="<?php echo $new_steamid; ?>">
            </div>

            <!--DISCORD NAME-->
            <div class="form-group">
                <label>Discord Username:</label>
                <input type="text" name="new_discord" class="form-control" value="<?php echo $new_discordusername; ?>">

            </div>

            <!--OLD PASSWORD-->
            <div class="form-group <?php echo (!empty($new_password_err)) ? 'has-error' : ''; ?>">
                <label>New Password</label>
                <input type="password" name="new_password" class="form-control" value="<?php echo $new_password; ?>">
                <span style ="color:red;" class="help-block"><?php echo $new_password_err; ?></span>
            </div>

            <!--NEW PASSWORD-->
            <div class="form-group <?php echo (!empty($confirm_password_err)) ? 'has-error' : ''; ?>">
                <label>Confirm Password</label>
                <input type="password" name="confirm_password" class="form-control">
                <span style ="color:red;" class="help-block"><?php echo $confirm_password_err; ?></span>
            </div>

            <div class="form-group">
                <input type="submit" class="btn btn-primary" value="Submit">
                <a class="btn btn-link" href="console.php">Cancel</a>
            </div>
        </form>

标签: phphtmlmysqlsql

解决方案


推荐阅读