Ошибка на самом деле является ошибкой PHP, а не ошибкой SQL. Попытка вычислить сложные выражения расширения переменной внутри интерполяции строк не работает так, как вы это делаете.
Попробуйте поместить объект внутрь {}
фигурных скобок:
$stmt = $this->db->prepare("INSERT INTO `items`
(`refno`, `color`, `size`, `qt`, `stackno`, `notes`, `price`, `add_date`)
VALUES (?, ?, ?, ?, ?, ?, ?, {$this->common->getTime()})") or die($db->error);
См. Подзаголовок Сложный (фигурный) синтаксис на странице руководства http://php.net/manual/en/language.types.string.php
Ваш комментарий:
теперь получает эту ошибку в той же строке: пытается получить свойство необъекта
Вы не показали, как вы настраиваете $this->common
. Учитывая приведенный вами синтаксис, common должен быть экземпляром объекта вашего класса common
. Я предполагаю, что вы пытаетесь вызвать функцию getTime () без создания экземпляра класса. Если вы хотите использовать статические методы класса, вам придется сделать это следующим образом:
class common {
public static function getTime() {
$date = new DateTime();
$date->setTimezone(new DateTimeZone('Europe/Paris'));
return $date->format('Y-m-d H:i:s');
}
}
$stmt = $this->db->prepare("INSERT INTO `items`
(`refno`, `color`, `size`, `qt`, `stackno`, `notes`, `price`, `add_date`)
VALUES (?, ?, ?, ?, ?, ?, ?, " . common::getTime() . ")") or die($db->error);
Если вы не знакомы с разницей между классами и объектами, а также с использованием static
, то вам нужно немного почитать, например, Объектно-ориентированный PHP .