我正在使用此查询(我更改了它):
// SQL query
$squl = "INSERT INTO 'messages' ('id','name' ,'email' ,'subject' ,'content','userid') VALUES ( null,'".$name."', '".$mail."', '".$subject."', '".$content."','');";
// mysql query
$query = mysql_query($squl) or die("message query problem: ". mysql_error());
我收到此错误:
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在''messages'('id','name','email','subject','content','userid')附近使用正确的语法VALUES(null, ''在第1行
造成这种情况的原因是什么?
答案 0 :(得分:5)
.``)
您在此处使用了句点而不是逗号,因此该函数在需要6时只接收5列。
更新
正如下面的评论者指出的那样,你已经用引号替换了反引号。
$squl="INSERT INTO `messages` (`id`,`name` ,`email` ,`subject` ,`content`,`userid` )VALUES ( null,'$name', '$mail', '$subject', '$content','');";
答案 1 :(得分:2)
(id,name ,email ,subject ,content,userid )
( NULL,".$name.", ".$mail.", ".$subject.", ".$content."**.**``);
你正在使用'。'而不是,
答案 2 :(得分:1)
嗯,这是关于从SQL获得的最清晰的消息。您尝试将5个值插入6列。
最后两个值之间没有逗号的问题。相反,有一个.
使得解析器认为它只是一个值。
答案 3 :(得分:0)
您正尝试插入6列:
id
name
email
subject
content
userid
但是只指定了5个值:
NULL
$name
$mail
$subject
$content
答案 4 :(得分:0)
你有一个点,你应该有一个逗号:
".$subject."`, `".$content."`.``);";
将最后一个点更改为逗号,您应该是黄金
答案 5 :(得分:0)
您的字段列表中有6个字段,但只在值列表中插入5个值。看起来您有一个.
而不是,
:
`, `".$subject."`, `".$content."`.``
^--- here
同样,没有理由像你一样使用重复的字符串连接。 PHP可以很容易地将变量插入到双引号字符串中:
$sql = "INSERT INTO .... (...) VALUES (NULL, '$name', '$mail', '$subject', '$content', '')";
请注意,未引用“null”值。反叛者可以逃避保留的话语。如果您打算插入真实数据库null,请使用单词null
。如果你想要一个文字字符串'null',那么通常引用它:'null'
。
答案 6 :(得分:-1)
第六组括号中列出了六个字段,VALUES中只有五个字段。这就是列数的含义。