如何让用户能够更新他们的信息


How to give the users the ability to update their information

嘿,伙计们,我是编程新手,我有一个快速的问题,希望不会太多。我正在努力让我的测试网站的用户能够更新他们的信息。我使用以下代码:

$mysqli = mysqli_connect('localhost', 'root', 'testpass', 'testdatabase') 
or die(mysqli_error());

echo "<h2>How would you like to update your account $_SESSION[username]?</h2>";
$display = <<<END
<h4> Update your username here: <br/></h4>
<form method="POST" action="$_SERVER[PHP_SELF]">
<input type="text" name="update_username"/>
<input type="submit" name="submit" value="Update"/>
</form>

END;
echo $display;
$update_username = $_POST['update_username'];
$current_username = $_SESSION['username'];

$sql_update = "UPDATE users SET username = '$update_username' WHERE username = '$current_username'";
$result_update = mysqli_query($mysqli, $sql_update) or die (mysqli_error($mysqli));

上面的代码更新了他们的信息,但只更新了一次。当我更新数据库后检查它时,它也变成了我更改的任何东西。然后我再次尝试更改,但没有更改,所以我注销并重新登录。当我重新登录时,我更改了它,但这次,当我查看数据库时,没有用户名。我重新注销并重新登录。我又改了一次,它真的变了。每次我尝试更改用户名(或任何其他类型的信息)时,我都必须经历同样的过程,这会变得非常烦人。你们对它为什么这么做有什么想法吗?谢谢

对于数据库内容,您希望按id跟踪所有内容,因此大多数表中的第一个字段将是"id",设置为具有自动增量的主键。然后在更新时,您将执行WHERE id=$userID。当他们登录时,用户id和用户名都会存储在会话中,任何查询都会通过id引用它们。当你开始执行表联接时,这也使查询/跟踪东西变得更容易/更快

尝试以下

END;
echo $display;
$update_username = $_POST['update_username'];
$current_username = $_SESSION['username'];
$current_id = mysql query select id where username = $current_username
$sql_update = "UPDATE users SET username = '$update_username' WHERE id = '$current_id'";
$result_update = mysqli_query($mysqli, $sql_update) or die (mysqli_error($mysqli));

希望你能修复我在$current_id变量中的伪代码