我只是想将当前日期和时间与数据库中的新行相关联,但我一直收到此错误:
表创建失败...(1064)SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在“会话”附近使用正确的语法(
id
,user_id
,date
)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()替换它时,错误消失了(但这不是我想要的)。
真的不确定我做错了什么,但我确定这是一个愚蠢的错误。
答案 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')"
^ ^ ^ ^