嘿伙计我是编程的新手,我有一个快速的问题,希望它不是太多。我试图让我的测试网站的用户能够更新他们的信息。我使用以下代码:
$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));
上面的代码更新了他们的信息,但它只更新了一次。当我在更新数据库后检查数据库时,它改为我改变它的任何内容。然后我尝试再次更改它但它没有改变,所以我退出并重新登录。当我重新登录时我改变了它,但是这一次,当我查看数据库时,没有用户名。我退回并重新登录。我再次改变它,它实际上改变了。每次我尝试更改用户名(或任何其他类型的信息)时,我都必须经历同样的过程,这会非常烦人。你们有什么想法为什么这样做?谢谢!
答案 0 :(得分:0)
对于数据库内容,您希望按ID跟踪所有内容,因此大多数每个表中的第一个字段将为“id”,设置为具有自动增量的主键。然后在更新时你会做WHERE id = $ userID。当他们登录时,用户ID将存储在会话中以及用户名中,并且任何查询都将通过id引用它们。当你开始进行表连接时,它还可以更容易/更快地查询/跟踪内容
答案 1 :(得分:0)
尝试以下
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
变量