PHP上的日期问题

时间:2016-02-12 16:11:06

标签: php centos

我们有一个购物系统并获得一些订单的正确日期,但有些订单显示为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。

这些错误日期会有什么问题? 谢谢。

2 个答案:

答案 0 :(得分:3)

1。格式

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"))

2。占位符

占位符为:tarih NOT tarih(请注意冒号),因此您应确保占位符的键正确无误。变化:

$statement->execute([ "tarih" //...

要:

$statement->execute([ ":tarih" //...

3。 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"))]);