我们有一个购物系统,可以收到一些日期正确的订单,但其中一些显示为1970年。我们使用以下代码:
$statement = $db->prepare("INSERT INTO tabloAdi (tarih) VALUES(:tarih)");
$statement->execute([ ":tarih" => date("Y-m-d H:i:s", strtotime("now"))]);
数据库是 MySQL表引擎是InnoDB塔里赫专栏是数据时间
我们的服务器 Centos 6.7。
这些不正确的日期会有什么问题?谢谢。
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
不是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")]);
tarih
应该是:tarih
的,像这样
$statement->execute([ ":tarih" => date("Y-m-d H : i : s", strtotime("now"))]);