change-username.php在数据库中将用户名重命名为空白

时间:2019-02-17 16:31:06

标签: php phpmyadmin

我的目标是创建一个用户仪表板,用户可以在其中更新他/她的详细信息,例如用户名,密码和电子邮件。

下面的代码来自reset-password.php(实际上有效)。我试图对其进行编辑以更改用户名和电子邮件。但是首先我需要使其正常运行。

单击“提交”按钮时没有出现任何错误,但是它将原始用户名重命名为空白。我找不到问题。我是这种PHP的新手(我已经学习了非常简单的过程类型)。请帮忙。

<?php
*// Initialize the session*
session_start();
*// Check if the user is logged in, otherwise 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_username = "";
$new_username_err = "";

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

*// Validate new Username*
if(empty(trim($_POST["new_username"]))){
    $new_username_err = "Please enter a new username.";     
}

*// Check input errors before updating the database*
if(empty($new_username_err)){
    *// Prepare an update statement*
    $sql = "UPDATE users SET username = ? WHERE id = ?";

    if($stmt = mysqli_prepare($link, $sql)){
        *// Bind variables to the prepared statement as parameters*
        mysqli_stmt_bind_param($stmt, "si", $param_username, $param_id);

        *// Set parameters*
        $param_username = $new_username;
        $param_id = $_SESSION["id"];

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

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

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

我的表单代码:

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">

                <div class="form-group <?php echo (!empty($new_username_err)) ? 'has-error' : ''; ?>">
                    <input type="text" name="new_username" placeholder="New Username" class="form-control" value="<?php echo $new_username; ?>">
                    <span class="help-block"><?php echo $new_username_err; ?></span>
                </div>


                <div class="form-group">
                    <input type="submit" class="btn" value="Submit">
                    <a class="btn" href="userpage.php"><i class="fas fa-ban"></i>Cancel</a>
                </div>
 </form>

1 个答案:

答案 0 :(得分:0)

在分配参数之前先绑定它们:

Passing Additional Data To Components

在分配后将带有绑定的块放入

    mysqli_stmt_bind_param($stmt, "si", $param_username, $param_id);

    *// Set parameters*
    $param_username = $new_username;
    $param_id = $_SESSION["id"];