我有一个非常简单的问题..我正在设计一个简单的博客系统,我正在尝试将当前日期放入存储博客文章的表中,同时等待管理员批准。但我使用的方法将0000-00-00放入日期栏!我正在使用的内容如下:
$query = "INSERT INTO blogentry VALUES ('".$mnam."','".date('d-m-Y h:m:s') ."\n"."','".$mcom."','".$approve."')";
我是相对较新的php所以偶然发现这样的错误...但我似乎不能谷歌这个!
谢谢你们!
答案 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 类型用于具有日期部分但没有时间部分的值。 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'))