Обновление в консоли выполнено успешно, но база данных не затронута - PullRequest
0 голосов
/ 19 июня 2020

Попытка обновить запись с помощью операторов PHP и PDO.

Запрос запускается без ошибок, и консоль считает, что обновление было успешным, но в таблице нет изменений.

Так запутались, почему это происходит:

<?php
include("../include/sessions.php");

if(isset($_POST['editcriteria']))
{
  $value = $_POST['editcriteria'];

  $editUID = $value['editUID'];
  $editAddDelete = $value['editAddDelete'];
  $editeffectiveDate = $value['editeffectiveDate'];

  try
  {
    $update = $conn->prepare("UPDATE primary_vehicle_data SET `add_delete` = :eadddelete, 
                                   `effective_date` = :eeffectivedate WHERE `uid` = :euid");

    $update->execute([
     'eadddelete' => $editAddDelete,
     'eeffectivedate' => $editeffectiveDate,
     'euid' => $editUID
    ]);

    if($update)
    {
      echo "Success: Record Updated";
    }
    else
    {
      echo "Error: The Vehcile was not updated.";
    }
  }
  catch(PDOException $e)
  {
    echo "Error: " . $e->getMessage();
  }
}
?>

Я максимально упростил приведенный выше код. Было еще несколько параметров, но когда я удалил параметры и оставил их с тремя параметрами, указанными выше, я все еще получаю «Успех: запись обновлена». Но таблица буквально не затронута.

Почему это происходит и как это исправить?

* ОБНОВЛЕНИЕ *

Я уже подтвердил подключение к базе это хорошо. Я заблудился.

1 Ответ

1 голос
/ 19 июня 2020

$update - это объект PDOStatement, поэтому при тестировании

if ($update)

он всегда будет успешным, поскольку объект PDOStatement эквивалентен true.

Вы должны:

  1. проверять результат $update->execute например,
    if ($update->execute([ /* params */])) {
проверка значения в $update->rowCount, которая сообщит вам, были ли затронуты какие-либо строки запросом.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...