ошибка на самом деле ошибка 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
Re ваш комментарий:
теперь получение этой ошибки на том же lin e: Попытка получить свойство не-объекта
Вы не показали, как вы устанавливаете $this->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
, то вам нужно сделайте некоторое чтение, например Object-Oriented PHP.
Функции даты в MySQL не используются напрямую, но вы можете указать серверу, какой часовой пояс использовать: http://dev.mysql.com/doc/refman/5.5/ru/time-zone-support.html –