Использование POST для обновления значений через форму HTML возвращает старые значения - PullRequest
0 голосов
/ 12 января 2019

Я работаю в системе CRUD и в данный момент нахожусь в разделе Обновление. У меня есть старые значения от пользователей, которые необходимо обновить до новых через форму HTML.

Сейчас я пытаюсь получить значения POST из формы HTML, установленной для метода post. После этого я обновляю информацию пользователя новыми значениями, полученными из запроса POST.

<?php
$oldId = $_GET['id'];
$conn = mysqli_connect('localhost', 'root', '')
or die('Verbinding met database server is mislukt.');
mysqli_select_db($conn, 'crudopdracht')
or die('De database is niet beschikbaar');
$query = "SELECT * FROM gebruikers WHERE id = $oldId";
$result = mysqli_query($conn, $query)
or die (mysqli_error($conn));
while ($row = mysqli_fetch_assoc($result)){
    $naam = $row['naam'];
    $leeftijd = $row['leeftijd'];
    $gender = $row['gender'];
    $locatie = $row['locatie'];
};
?>
<form action="" method="post">
    <label for="id">ID:</label><br>
    <input type="text" id="id" name="id" <?php echo 'placeholder="' . $oldId . '"><br>';?>
    <label for="naam">Naam:</label><br>
    <input type="text" id="naam" name="naam" <?php echo 'placeholder="' . $naam . '"><br>';?>
    <label for="leeftijd">Leeftijd:</label><br>
    <input type="text" id="leeftijd" name = "leeftijd" <?php echo 'placeholder="' . $leeftijd . '"><br>';?>
    <label for="gender">Geslacht:</label><br>
    <input type="text" id="gender" name="gender" <?php echo '[placeholder="' . $gender . '"><br>';?>
    <label for="locatie">Locatie:</label><br>
    <input type="text" id="locatie" name = "locatie" <?php echo 'placeholder="' . $locatie . '"><br><br>';?>
    <input type="submit" value="Verstuur" id="submit" name="submit">
</form>
</div>
<?php
if(isset($_POST["submit"])){
    echo 'hello';
    $id = $_POST["id"];
    $naam = $_POST["naam"];
    $leeftijd = $_POST["leeftijd"];
    $gender = $_POST["gender"];
    $locatie = $_POST["locatie"];
    $query2 = "UPDATE gebruikers SET id = $id, naam = $naam, leeftijd = $leeftijd, gender = $gender, locatie = $locatie WHERE id = $oldId";
    mysqli_query($conn,$query2);
}
?>

По моему мнению, я ожидаю, что значения изменятся на новые, заданные в форме HTML, но они всегда возвращают старые значения.

1 Ответ

0 голосов
/ 12 января 2019

Проблемы с внедрением SQL (как вы уже сказали, это не входит в сферу действия конкретной проблемы), вам нужно правильно отформатировать ваш запрос SQL для любых нецелых значений, чтобы они были заключены в кавычки ('[value]').

Ваш запрос будет работать как:

UPDATE gebruikers ( id = somevalue, naam = somevalue, leeftijd = somevalue, gender = somevalue, locatie = somevalue WHERE id = 12345`

В этом запросе SQL попытается интерпретировать ваши значения как сущности (столбцы, таблицы), что явно не то, что вам нужно.

Итак, , хотя вы никогда не должны вводить введенные пользователем значения в запрос , следующее должно решить вашу проблему:

Изменение

$query2 = "UPDATE gebruikers SET id = $id, naam = $naam, leeftijd = $leeftijd, gender = $gender, locatie = $locatie WHERE id = $oldId";

до

$query2 = "UPDATE gebruikers SET id = $id, naam = '$naam', leeftijd = '$leeftijd', gender = '$gender', locatie = '$locatie' WHERE id = $oldId";`

Предполагается, что id является полем INT, а остальные являются строками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...