Как получить предыдущую запись в базе данных при обновлении? - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть эта история, в которой я должен поместить то, что я изменил, и измененные данные.Например: я обновил яблоко до манго.В моей истории это должно быть обновление от яблока до манго.Я попытался fetchColumn, но он говорит Uncaught Ошибка: вызов функции-члена fetchColumn ().Вот мой код:

    if($_POST["operationproducts"] == "Edit")
 {
  $image = '';
  if($_FILES["image"]["name"] != '')
  {
   $image = upload_image();
  }
  else
  {
   $image = $_POST["hidden_image"];
  }
    //get previous name 
    $q= $connection->query("SELECT name FROM products WHERE prodID = :prodID");
     $previousname = $q->fetchColumn();
  $statement = $connection->prepare(
   "UPDATE products 
   SET categoryID = :categoryID, brandID = :brandID, name = :name, size = :size, image = :image, price = :price, stocks = :stocks, availability = :availability, description = :description
   WHERE prodID = :prodID
   "
  );
  $result = $statement->execute(
   array(
    ':categoryID' => $_POST["categoryID"],
    ':brandID' => $_POST["brandID"],
    ':name' => $_POST["name"],
    ':size' => $_POST["size"],
    ':image'  => $image,
    ':price' => $_POST["price"],
    ':stocks' => $_POST["stocks"],
    ':availability' => $_POST["availability"],
    ':description' => $_POST["description"],
    ':prodID'   => $_POST["prodID"]
   )
  );
  if(!empty($result))
  {
    //insert to product history
    $userid = $_SESSION['userid'];
    $previous = $previousname;
    $date = date("Y-m-d H:i:s");
    $action = 'Updated ' . $previous . 'to ' . $_POST["name"];
    $remarks = $_POST["remarks"];
    $statement = $connection->prepare("
               INSERT INTO producthistory (userid, prodID, action, time, remarks) 
               VALUES (:userid, :prodID, :action, :time, :remarks)
              ");

    $result = $statement->execute(
               array(
                ':userid' => $userid,
                ':prodID' => $_POST["prodID"],
                ':action' => $action,
                ':time' => $date,
                ':remarks'  => $remarks,
               )
    );
    echo 'Data Updated';
  }
     }

 }

1 Ответ

0 голосов
/ 25 февраля 2019

Вы пропустили один аргумент: prodID.

Лучше использовать оператор подготовки и привязать параметр к отсутствующему

$q->bindParam(':prodID', $prodID) or using array as your way

Если вы используете запрос как показано ниже:

$q= $connection->query("SELECT name FROM products WHERE prodID = :prodID");
$previousname = $q->fetchColumn();

Должен заменить $ previousname = $ q-> fetchColumn ();с $ previousname = $ q [0] ['name'];

Или лучше выведите результат запроса, чтобы увидеть структуру!

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