【问题标题】:Data PHP: How to do?数据 PHP:怎么办?
【发布时间】:2013-06-06 13:52:12
【问题描述】:

我很想知道如何制作一个 php 脚本,让我知道数据库中输入数据的日期(文本)。添加数据的查询结构如下:

$query = "INSERT INTO column (Data) VALUES ( NOW() )";

在数据库中,我创建了一个时间戳类型的日期字段。相反,从数据库中检索数据的脚本的结构是这样的

$query = mysql_query("SELECT Data FROM table WHERE id = ".$_REQUEST['id'].";");
while ($Row = mysql_fetch_array($query)) {
    echo "Created:".$Row[0];
}

输出始终是 01/01/1970,即 Unix 日期。怎么解决?请我要疯了!!!你能发布正确的代码吗?非常感谢!

【问题讨论】:

  • 圣洁SQL injections,蝙蝠侠!!
  • 您是否检查过数据库以确保数据被正确添加?
  • 你真的应该停止使用 mysql_ crappy 函数并使用准备好的语句与 mysqli 或 PDO
  • Little Bobby来访:)
  • @Ethan 还合适。 “照顾好小事......大事会照顾好自己。”

标签: mysql date timestamp


【解决方案1】:

更好的解决方案是使用timestamp 默认值创建表。这样一来,就timestamp 列而言,您不必在表中插入任何内容。

为此,您可以在创建表时执行以下操作,

 `created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

上面将自动将created 列设置为行数据插入到列中的时间。

如果您希望在行更新时自动更新列行,您还可以执行以下操作;这对于论坛显示该帖子的最后更新或编辑时间的列很有用。

`updated` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

您可以在此处阅读更多相关信息,http://dev.mysql.com/doc/refman/5.0/en/date-and-time-types.html

在检索值时,要从 php 获取类似日期的输出,请使用 date 函数。

有关日期功能的更多信息可以在这里找到http://php.net/manual/en/function.date.php

另外值得注意的是,你现在的代码写得不是很好,并且对SQL注入开放(http://en.wikipedia.org/wiki/SQL_injection),我建议你学习php的PDO(http://php.net/manual/en/book.pdo.php)。

PDO 的另一个优点是,如果将来您更改数据库,使用 PDO 时完成任务并不是一件很困难的事情。

【讨论】:

  • 嗨,我已经设置了 current_timestamp 默认值。 i41.tinypic.com/eumpf5.png 。我不在乎修改日期。你能告诉我将日期转换为可读格式的完整说明吗?日期以这种格式存储到数据库中 2013-06-06 16:30:41 P.S.如何理解代码是否对 SQL 注入开放?对不起我的英语
【解决方案2】:

可以试试这个

$query = "INSERT INTO table_name (Data) VALUES (CURRENT_TIMESTAMP())";

问题似乎是您没有正确插入数据,这就是您返回 0 天时间戳的原因。

【讨论】:

    猜你喜欢
    • 2020-07-08
    • 2016-08-26
    • 2018-12-10
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 2011-09-23
    • 2012-06-23
    • 1970-01-01
    相关资源
    最近更新 更多