在MySQL中插入日期/时间

时间:2013-06-27 12:16:05

标签: php mysql mysqli

我只是想将当前日期和时间与数据库中的新行相关联,但我一直收到此错误:

  

表创建失败...(1064)SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在“会话”附近使用正确的语法(iduser_iddate)VALUES('',1,2013-06 -27 22:13:57)'在第1行

这是我检索日期的代码:

date_default_timezone_set('Australia/Melbourne');
$date = date('Y-m-d H:i:s');

和“插入”声明:

if (!$mysqli->query("INSERT INTO 'session' (`id`, `user_id`, `date`) VALUES ('', $user_id, $date)")) {
    echo "Table creation failed... (" . $mysqli->errno . ") " . $mysqli->error;
}

当我在语句中删除$ date变量时,或者当我用NOW()替换它时,错误消失了(但这不是我想要的)。

真的不确定我做错了什么,但我确定这是一个愚蠢的错误。

3 个答案:

答案 0 :(得分:2)

如果要转义列或表名,请使用反引号,而不是引号

INSERT INTO `session` (`id`, `user_id`, `date`) VALUES ('', $user_id, '$date')
            ^-------^--------backticks           quotes---------------^-----^

还要将日期用引号括起来,因为它是一个字符串

答案 1 :(得分:0)

尝试使用$ data和$ user_id的引号(如果不是整数):

if (!$mysqli->query("INSERT INTO session (id, user_id, date) VALUES ('', '$user_id', '$date')")) {
    echo "Table creation failed... (" . $mysqli->errno . ") " . $mysqli->error;
}

答案 2 :(得分:0)

您在查询中忘记了单引号,并为表名

重新添加了反引号
"INSERT INTO `session` (`id`, `user_id`, `date`) VALUES ('', $user_id, '$date')"
             ^       ^                                                 ^     ^