我们有一个购物系统并获得一些订单的正确日期,但有些订单显示为1970.我们使用以下代码:
$statement = $db->prepare("INSERT INTO tabloAdi (tarih) VALUES(:tarih)");
$statement->execute([ ":tarih" => date("Y-m-d H:i:s", strtotime("now"))]);
数据库是MySQL 表引擎是InnoDB tarih列是数据时间
我们的服务器Centos 6.7。
这些错误日期会有什么问题? 谢谢。
答案 0 :(得分:3)
SQL中DATETIME
列的格式为:
YYYY-MM-DDThh:nn:ss[.mmmmmmm]
因此,Y-m-d H : i : s
作为格式不正确。比较:
//your code output
2016-02-12 11 : 16 : 55
//required formatting
2016-02-12EST11:16:55
改变这个:
date("Y-m-d H : i : s", strtotime("now"))
对此:
date("Y-m-dTH:i:s", strtotime("now"))
占位符为:tarih
NOT tarih
(请注意冒号),因此您应确保占位符的键正确无误。变化:
$statement->execute([ "tarih" //...
要:
$statement->execute([ ":tarih" //...
date()
这不是错误但有用:date()
默认使用当前时间 ,因此您无需指定strtotime("now")
。因此,您可以更改:
date("Y-m-dTH:i:s", strtotime("now"))
要:
date("Y-m-dTH:i:s");
$statement = $db->prepare("INSERT INTO tabloAdi (tarih) VALUES(:tarih)");
$statement->execute([ ":tarih" => date("Y-m-dTH:i:s")]);
答案 1 :(得分:0)
tarih
应该是:tarih
,就像这样
$statement->execute([ ":tarih" => date("Y-m-d H : i : s", strtotime("now"))]);