Как я могу обновить данные в моей базе данных PostgreSQL, используя форму в PHP? - PullRequest
0 голосов
/ 04 апреля 2020

Я пытаюсь обновить некоторые данные до Postgres, используя форму PHP, но получаю следующее сообщение об ошибке:

Ошибка с БД. Подробности: PDOException: SQLSTATE [42601]: синтаксическая ошибка: 7 ОШИБКА: синтаксическая ошибка в конце ввода ЛИНИЯ 1: ... te = '04 / 04/2020 ', check_out_date = '04 / 05/2020' WHERE id = ^ в /app/web/week05/update.php:13 Трассировка стека: # 0 /app/web/week05/update.php(13): PDOStatement-> execute () # 1 {main}

Вот так выглядит моя php форма:

    <?php echo "   <form method='post' action='update.php'>

    <div class='form-group'>
        <label for='reservationID'>Reservation ID:</label>
        <input type='text' class='form-control' id='reservationID' name='reservationID' value='$reservation_id' disabled>
        <div class='valid-feedback'>Valid.</div>
      </div>

      <div class='form-group'>
        <label for='RoomNumber'>Room Number: </label>
        <input type='text' class='form-control' id='RoomNumber' name='RoomNumber' value='$room_number' required>
        <div class='valid-feedback'>Valid.</div>
      </div>

    <div class='form-group'>
        Check-In Date: <input width='276' id='checkInDate' name='checkInDate' required />
        Check-Out Date: <input width='276' id='checkOutDate' name='checkOutDate' required />

    </div>

    <button type='submit' class='btn btn-primary'>Update</button>
    <br>
    <br>
    </form>
  </div>";

  ?>

А вот код моего обновления. php file:

    <?php
$id = $_POST['reservationID'];
$RoomNumber = $_POST['RoomNumber'];
$checkInDate = $_POST['checkInDate'];
$checkOutDate = $_POST['checkOutDate'];

require "connection.php";
$db = get_db();

try
{
    $update = $db->prepare("UPDATE reservation SET room_number = '$RoomNumber', check_in_date = '$checkInDate', check_out_date = '$checkOutDate' WHERE id = $id");
    $update->execute();
}
catch (Exception $ex)
{
    echo "Error with DB. Details: $ex";
    die();
}
header("Location: search3.php");

die(); 

?>

Действительно нужно помогите здесь, спасибо!

1 Ответ

1 голос
/ 04 апреля 2020

Отключенные поля не передаются на сервер. Вместо этого используйте input type=hidden:

<input type='hidden' id='reservationID' name='reservationID' value='$reservation_id'>

Кроме того, правильное использование подготовленных утверждений в вашем случае:

$update = $db->prepare("UPDATE reservation SET room_number = ?, check_in_date = ?, check_out_date = ? WHERE id = ?");
$update->execute([
    $RoomNumber,
    $checkInDate,
    $checkOutDate,
    $id,
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...