PHP不在MySQL表列中存储日期

时间:2015-07-08 07:21:28

标签: php html mysql date timestamp

我在将日期正确地存储在列名称" publicationDate'下的MySQL数据库表中时遇到问题。通过HTML格式。

 //  Contruct Of The Data
public function __construct($data=array()) {
if (isset($data['id'])) $this->id = (int) $data['id'];
if (isset($data['publicationDate'])) $this->publicationDate = (int) $data['publicationDate'];
if (isset($data['content'])) $this->content = $data['content'];
}

// Values To Post/Store For The Webpage Forms 
public function storeFormValues ($params) {
 $this->__construct($params);
 if (isset($params['publicationDate'])) {
   $publicationDate = explode ('-', $params['publicationDate']);
  if (count($publicationDate) == 3) {
    list ($y, $m, $d) = $publicationDate;
    $this->publicationDate = mktime (0, 0, 0, $m, $d, $y);
   }
  }
 }

My SQL专栏" publicationDate'数据类型是' TIMESTAMP()' ' NOT NULL'默认' CURRENT_TIMESTAMP'。日期将被存储&格式化' 0000-00-00 00:00:00'。

" publicationDate'的HTML表单输入这是一个隐藏且不需要编辑的编辑表单,如下所示:

<input type="hidden" name="publicationDate" id="publicationDate" value="<?php if ($results['article']->id ==true) { echo date("Y-m-d g:i:s", $results['article']->publicationDate);} else { echo date("Y-m-d g:i:s");}?>"/>

它会存储这样的日期 - &#39; 0000-00-00 00:00:00&#39;这是&yyyy-mm-dd hh:mm:ss&#39;但只有年,月,和一天会正确显示。小时,分钟和&amp;秒将始终出现在MySQL全零(00:00:00)。显示/列出我的数据时,这显然是一个问题&#39; DESC&#39;当然,最近最重要的是在列表的顶部。

2 个答案:

答案 0 :(得分:1)

由于您希望mysql日期格式为'yyyy-mm-dd hh:mm:ss',因此您需要更改php日期格式。

在两个实例中将date("Y-m-d g:i:s"更改为date("Y-m-d H:i:s"

g格式以12小时格式显示小时,不带前导零 而H格式以24小时格式显示带有前导零的小时。

当你构造$publicationDate时,你用小时= 0,分钟= 0,秒= 0来创建它。

如果您想在表单提交时填充$publicationDate,请使用以下命令:

$publicationDate = mktime(date('H'), date('i'), date('s'), $m, $d, $y);

这将使用当前的小时,分​​钟和秒以及用户提交的月,日和年。

您应该在`storeFormValues函数中实际分配实际时间。

请参阅此处的mktime

手册

答案 1 :(得分:0)

根据PHP日期函数(http://php.net/manual/en/function.date.php)的文档,g:g:i:s将是12小时格式的一小时没有前导零。它需要是H,这是一小时的24小时格式,带有前导零。