У меня есть страница PHP с HTML-формой и 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'";
}
?>
Вы должны запросить $_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.
Вместо этого используйте подготовленные заявления.
<?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();
}
?>