我在sql查询中使用NOW()。我想把它改成另一个时区。那可能吗?
试过这个功能
class common {
public function getTime() {
$date = new DateTime();
$date->setTimezone(new DateTimeZone('Europe/Paris'));
return $date->format('Y-m-d H:i:s');
}
}
收到以下错误
Catchable fatal error: Object of class common could not be converted to string in line below
$stmt = $this->db->prepare("INSERT INTO `items`
(`refno`, `color`, `size`, `qt`, `stackno`, `notes`, `price`, `add_date`)
VALUES (?, ?, ?, ?, ?, ?, ?, $this->common->getTime())") or die($db->error);
我做错了什么?
答案 0 :(得分:3)
错误实际上是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
的对象实例。我猜你试图在不实例化类的情况下调用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
答案 1 :(得分:0)
您将使用此SQL调用。
SET time_zone = timezone;
根据mysql文档。
http://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html