Обновление записей в базе данных с использованием предварительно заполненной формы - PullRequest
0 голосов
/ 04 мая 2020

Похоже, у меня есть 1 последняя проблема, которую я не могу решить из-за того, что слишком неопытен в этом вопросе. Эта последняя проблема, с которой я не могу добраться до работы или, по сути, не понимаю, как это сделать.

Я смог сделать следующее:

  • Форма, которая записывает записи в базу данных

  • Страница, которая отображает записи базы данных в таблице

  • Добавлена ​​кнопка редактирования в таблицу, в которой вы можете перейти к правка. php страница с формой, в которой предварительно заполнены все значения.

Сейчас я пытаюсь приступить к работе, чтобы отредактировать один из входных данных в форме так, это обновляется в базе данных.

Пока у меня есть это на редактировании. php страница:

<?php

$servername = "localhost";
$username = "";
$password = "";
$dbname = "";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}


$sql = "SELECT id, name, email, age FROM members WHERE id =" .$_GET['id'];
$result = mysqli_query($conn,$sql);
if(mysqli_num_rows($result) > 0) {
  $row = mysqli_fetch_assoc($result);
  $id = $row['id'];
  $name = $row['name'];
  $email = $row['email'];
  $age = $row['age'];

?>

<form action=" <?=$_SERVER['PHP_SELF']?> " method="POST">
<div align="center">
<div class="container">

      <div class="row">
      <div class="col-25">
        <label for="#"></label>
      </div>
      <div class="col-75">
        <h2>ID: <?php echo $row['id']; ?></h2>
      </div>
    </div>
    <br>

    <div class="row">
      <div class="col-25">
        <label for="name">Name:</label>
      </div>
      <div class="col-75">
        <input type="text" name="name" value="<?php echo $row['name']; ?>" id="my-input" class="input-res">
      </div>
    </div>

        <div class="row">
      <div class="col-25">
        <label for="email">Email:</label>
      </div>
      <div class="col-75">
        <input type="text" name="email" value="<?php echo $row['email']; ?>" class="input-res">
      </div>
    </div>

    <div class="row">
      <div class="col-25">
        <label for="age">Age:</label>
      </div>
      <div class="col-75">
        <input type="text" name="age" value="<?php echo $row['age']; ?>" class="input-res">
      </div>
    </div>

    <div class="row"><br>
    <input type="submit" name="submit" value="Save updates" class="button">
    </div>


</div> 

</div>   

</form>

</body>

</html>

Попытался добавить этот код ниже формы:


<?php
    if(isset($_POST['Submit'])){//if the submit button is clicked


    $sql="UPDATE name, email, age SET name, email, age WHERE name = ".$name.", email = ".$email.", age = ".$age.";
    $conn->query($sql) or die("Cannot update");//update or error
    }
?>

Но страница больше не работает, попытался перейти от одинарных кавычек к двойным qoutes et c. но безуспешно и несколько других решений (которые, к сожалению, не сработали).

1 Ответ

0 голосов
/ 04 мая 2020
  1. Требуется $ _POST, чтобы получить объявленное значение
  2. Использовать подготовку к безопасности

примечание: d ie здесь неверная идея

Исправить код будет:

<?php
if (isset($_POST['Submit'],$_POST['name'],$_POST['email'],$_POST['age'],$_GET['id'])) { //if the submit button is clicked

    $stmt = $conn->prepare('UPDATE name, email, age SET name = ?, email = ?, age = ? WHERE id=?');
    $stmt->bind_param('ssii', $_POST['name'], $_POST['email'], $_POST['age'], $_GET['id']);
    $stmt->execute();
    echo "Updated successfully"; // Updated Successfully
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...