PHP无法显示更新的值

PHP无法显示更新的值,php,jquery,mysql,session,Php,Jquery,Mysql,Session,我试图在showNamediv中显示更新值,但我的网站仅在注销并再次登录后显示更新值 按saveName按钮更新用户名 成功更新PHPMyAdminusers表中的用户名 showNamediv仍然显示旧用户名。即使我刷新页面 index.php <div id="showName"> <?php if(isset($_SESSION['userId'])){ echo $_SESSION['username']; } ?> </div>

我试图在
showName
div中显示更新值,但我的网站仅在注销并再次登录后显示更新值

  • saveName
    按钮更新用户名
  • 成功更新PHPMyAdmin
    users
    表中的用户名
  • showName
    div仍然显示旧用户名。即使我刷新页面
  • index.php

    <div id="showName">
    <?php
        if(isset($_SESSION['userId'])){
            echo $_SESSION['username']; }
    ?>
    </div>
    <div id="message"></div>
    <div> <input id="editName" name="editName" /> </div>
    
    <button id="saveName" type="submit" >Save</button>
    
    <?php
    ob_start();
    session_start();
    
    include_once('database.php');
    
    $validUser= $_SESSION["username"];
    
    if(isset($_POST['editName']))
    {   
        $username = $_POST["editName"];
    
        if ($username =="") {
            echo "Enter your full name.";
            return false;
        }else {
            $sql = "UPDATE users SET username='$username' WHERE username='$validUser'";
    
            if(mysqli_query($con, $sql)){
                echo "Successfully Updated.";
            } else{
                echo "Something went wrong"; }
        }
        return false;
    }
        ob_end_flush(); 
    ?>
    
    $("#saveName").click( function(e) {
        e.preventDefault();
        e.stopPropagation();
    
        $.post("edit.php",
        $("#editName").serializeArray(),
             function(info){ $("#message").html(info);
        });
    
    });
    

    在数据库中更新新用户名后,必须将其放入会话。
    $\u会话[“用户名”]=$您的新用户名

    <? php
    ob_start();
    session_start();
    
    include_once('database.php');
    
    $validUser = $_SESSION["username"];
    
    if (isset($_POST['editName'])) {
      $username = $_POST["editName"];
    
      if ($username == "") {
        echo "Enter your full name.";
        return false;
      } else {
        $sql = "UPDATE users SET username='$username' WHERE username='$validUser'";
    
        if (mysqli_query($con, $sql)) {
          echo "Successfully Updated.";
          $_SESSION["username"] = $username // Updating the new username to session
        } else {
          echo "Something went wrong";
        }
      }
      return false;
    }
    ob_end_flush(); ?>
    

    警告:当使用
    mysqli
    时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
    $\u POST
    $\u GET
    数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。提示:如果您正在从
    $\u会话
    中提取数据,那么如果您在数据库中更改数据,您也必须对其进行更新。@tadman我实际上有一个使用
    trim()
    的函数,
    stripslashes()
    htmlspecialchars()
    用于
    $\u POST
    。我想知道当我同时更新数据库时如何更新
    $\u SESSION
    ?这种方法完全不合适,它不能正确地防止注入。将准备好的语句与占位符值一起使用。此外,要更新会话
    $\u,通常只需分配给它即可。你一开始是怎么设定这个值的?那样。