gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 01:28:13 25 4
gpt4 key购买 nike

我在通过 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com