我有一个带有HTML表单和PHP的PHP页面。它要求用户更改其用户名并在数据库中进行更改。我有一些代码,但它不起作用,我被困在我需要的东西。有人可以给我一些想法吗?
HTML
<form id="edit" method="POST" action="">
<h1>
<label for="username">Username *</label>
<input id="username1" type="text" name="username1" value=""/>
</h1>
<h1>
<button id="submit" type="submit">Submit</button>
</h1>
</form>
PHP
<?php
if (isset($_POST['edit'])){
$username = $_POST["username1"];
$id = $_SESSION["user_id"];
$query = "UPDATE user SET username = '$username' WHERE id = '$id'";
}
?>
答案 0 :(得分:1)
您必须要求$_POST['username']
而不是$_POST['edit']
。
您的查询必须由mysqli或PDO执行。
<?php
if (isset($_POST['username1'])){
$username = $_POST["username1"];
$id = $_SESSION["user_id"];
$query = "UPDATE user SET username = '$username' WHERE id = '$id'";
mysqli_query($database_con, $query);
}
?>
但是这些方法是不安全的,因为$ username和$ id可能包含SQL-Injection。
改为使用prepared statements。
<?php
$con = new mysqli("host", "user", "password", "databasename");
if (isset($_POST['username1'])){
$username = $_POST["username1"];
$id = $_SESSION["user_id"];
$stmt = $con->prepare("UPDATE user SET username = ? WHERE id = ?");
$stmt->bind_param("si",$username,$id);
$stmt->execute();
}
?>