使用代码
mysql_query("INSERT INTO Messages (Message, toUser, From, Date) VALUES ('$mes','$to','$from','$date')")
我收到了SQL语法错误。这是什么原因?我认为语法没有错。
答案 0 :(得分:5)
DATE
是SQL中的保留字,因此我认为当您将其用作列名时会触发语法错误,因为MySQL会尝试将其解析为列名以外的其他内容。
使用反引号转义标识符:
mysql_query("INSERT INTO `Messages` (`Message`, `toUser`, `From`, `Date`) VALUES ('$mes','$to','$from','$date')")
或者更好的是,看看您是否可以将列重命名为其他不需要转义的内容。
答案 1 :(得分:1)
我的猜测是有人在其中一个变量中添加'
,从而进行类似
INSERT INTO Messages (Message, toUser, From, Date) VALUES ('Test','Joe O'Neil','Jack Smith','2011-12-20')
由于'
中的"O'Neil"
,这是语法错误。在SQL中使用变量之前,需要转义变量。
$mes = mysql_real_escape_string($mes);
$to = mysql_real_escape_string($to);
$from = mysql_real_escape_string($from);
$date = mysql_real_escape_string($date);
mysql_query("INSERT INTO Messages (Message, toUser, From, Date) VALUES ('$mes','$to','$from','$date')");
答案 2 :(得分:0)
进行查询,例如:
//use mysql_real_escape_string for variables
mysql_query("INSERT INTO Messages (`Message`, `toUser`, `From`, `Date`) VALUES ('$mes','$to','$from','$date')")
答案 3 :(得分:0)
变量中可能存在需要转义的字符。按照此处所述使用mysql_real_escape_string
:http://php.net/manual/en/function.mysql-real-escape-string.php