PHP - 将日期放入MySQL表中

时间:2012-03-22 17:45:26

标签: php mysql date

我有一个非常简单的问题..我正在设计一个简单的博客系统,我正在尝试将当前日期放入存储博客文章的表中,同时等待管理员批准。但我使用的方法将0000-00-00放入日期栏!我正在使用的内容如下:

$query = "INSERT INTO blogentry VALUES ('".$mnam."','".date('d-m-Y h:m:s') ."\n"."','".$mcom."','".$approve."')";

我是相对较新的php所以偶然发现这样的错误...但我似乎不能谷歌这个!

谢谢你们!

4 个答案:

答案 0 :(得分:3)

所以最简单的方法是让MySQL使用NOW()函数来处理它:

INSERT INTO blogentry VALUES( ..., NOW(), ... )

另一种选择是通过更改表格来使用TIMESTAMP - 将列设置为使用TIMESTAMP键入DEFAULT CURRENT_TIMESTAMP,并且您可以在插入时忽略该列 - 它将自动成为充满了当前的时间。您需要指定要插入的列才能跳过列:

INSERT INTO blogentry( column1, column2 ) VALUES( column1value, column2value )

最后,您需要来清理您的输入。最好使用预先准备好的语句和PDO(http://php.net/manual/en/pdo.prepared-statements.php),或者至少使用mysql_real_escape_string

答案 1 :(得分:2)

来自DATE, DATETIME

上的MySQL手册
  

DATE 类型用于具有日期部分但没有时间部分的值。   MySQL以'YYYY-MM-DD'格式检索并显示 DATE 值。该   支持的范围是'1000-01-01''9999-12-31'

这意味着您必须以YYYY-MM-DD格式插入日期。您使用的是date('d-m-Y h:m:s')格式。将其更改为date('Y-m-d'),它应该正确插入。

如果您还想要时间,则需要将列数据类型更改为DATETIME,然后使用格式date('Y-m-d H:i:s')进行插入。

另外,您可以使用INT列类型来存储以UTC格式存储的Unix时间戳,以便它更具可移植性。然后,您可以轻松地操纵时间戳,以任何方式输出日期。

答案 2 :(得分:1)

尝试只存储strtotime()结果。它创建了一个唯一的时间戳,然后可以在将来需要时解析它。

答案 3 :(得分:-1)

您可能需要为日期函数提供时间戳:

date('d-m-Y h:m:s', strtotime('now'))

另外,要做一个标准的日期时间格式:

date('Y-m-d H:i:s', strtotime('now'))