我有一个很可能非常简单的问题..我正在设计一个简单的博客系统,我试图把当前的日期到表中的博客帖子存储,同时等待管理员的批准。但是我使用的方法将0000-00-00放入date列!我使用的内容如下:
$query = "INSERT INTO blogentry VALUES ('".$mnam."','".date('d-m-Y h:m:s') ."\n"."','".$mcom."','".$approve."')";我是php的新手,所以经常会遇到这样的错误……但是我似乎不能在谷歌上搜索这个!
谢谢你们!
发布于 2012-03-23 01:50:46
所以最简单的方法就是让MySQL用NOW()函数来处理它:
INSERT INTO blogentry VALUES( ..., NOW(), ... )另一种选择是通过更改表来使用TIMESTAMPs -将列设置为带有DEFAULT CURRENT_TIMESTAMP的TIMESTAMP类型,您可以在插入时忽略该列-它将自动填充为当前时间。为了跳过列,您需要指定要插入到的列:
INSERT INTO blogentry( column1, column2 ) VALUES( column1value, column2value )最后,您需要来清理您的输入。最好使用预准备语句和PDO (http://php.net/manual/en/pdo.prepared-statements.php),或者至少使用mysql_real_escape_string。
发布于 2012-03-23 01:50:14
来自DATE, DATETIME上的MySQL手册
date 类型用于具有日期部分但没有时间部分的值。MySQL以'YYYY-MM-DD'格式检索和显示DATE值。支持的范围是从'9999-12-31'.到'1000-01-01'
这意味着您必须以YYYY-MM-DD格式插入日期。您正在使用date('d-m-Y h:m:s')格式。将其更改为date('Y-m-d'),它应该会正确插入。
如果还需要时间,那么需要将列数据类型更改为DATETIME,然后使用date('Y-m-d H:i:s')格式插入。
如前所述,您可以使用INT列类型来代替,并存储Unix时间戳,该时间戳存储在UTC域中,因此更便于移植。然后,您可以轻松地操作时间戳,以任何您想要的方式输出日期。
发布于 2012-03-23 01:48:08
尝试只存储strtotime()结果。它创建了一个唯一的时间戳,然后可以在将来需要它时对其进行解析。
https://stackoverflow.com/questions/9827691
复制相似问题