PHP 不将日期存储在 MySQL 表列中

标签 php html mysql date timestamp

我在通过 html 表单将日期正确存储在列名“publicationDate”下的 MySQL 数据库表中时遇到问题。

 //  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);
   }
  }
 }

我的 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");}?>"/>

它会像这样存储日期 - '0000-00-00 00:00:00' 即 'yyyy-mm-dd hh:mm:ss' 但只有年、月和日会正确显示.小时、分钟和秒在 MySQL 中始终显示为全零 (00:00:00)。当显示/列出我的数据“DESC”时,这显然是一个问题,这当然是最新的,位于列表的顶部。

最佳答案

由于您希望 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 时,您可以使用 hour=0, minute=0, second=0 创建它。

如果您想用表单提交的时间填充 $publicationDate,请使用:

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

这将从用户那里获取当前的小时、分钟和秒以及提交的月、日和年。

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

请在此处查看 mktime 的手册

关于PHP 不将日期存储在 MySQL 表列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31286000/

相关文章:

php - 利用浏览器缓存 - 无法使 Minify php 的 max-age 工作

php - Flash MP3 播放器和 php/mysql

php - 如何让 PHP getter/setter 从其字段继承 DocBlock?

html - MegaMenu 上的 CSS 过渡效果

mysql - BETWEEN 使用负值和无符号整数

java - Cascade 在 Hibernate 一对一映射中不起作用

php - 如何重定向到数据表的第一页?

html - IE7 上的 ASP WebForms DropDownList 怪异行为

javascript - 使用 PHP 从另一个页面获取内容

php - 为变量设置值