Php SQL查询有问题吗
我正在使用此查询(我已更改): 我得到这个错误: 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第1行“messages”(“id”,“name”,“email”,“subject”,“content”,“userid”)值(null)”附近使用的正确语法Php SQL查询有问题吗,php,mysql,Php,Mysql,我正在使用此查询(我已更改): 我得到这个错误: 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第1行“messages”(“id”,“name”,“email”,“subject”,“content”,“userid”)值(null)”附近使用的正确语法 是什么导致了这种情况?好吧,这是您从SQL得到的最清晰的消息。您尝试在6列中插入5个值 问题是最后两个值之间没有逗号。取而代之的是一个,这使解析器认为它只是一个值。`您在这里使用了句点而不是逗号,因此函数在需要6列时只接
是什么导致了这种情况?好吧,这是您从SQL得到的最清晰的消息。您尝试在6列中插入5个值 问题是最后两个值之间没有逗号。取而代之的是一个
,这使解析器认为它只是一个值。`
您在这里使用了句点而不是逗号,因此函数在需要6列时只接收5列
更新:
正如下面的评论员所指出的,您已经用引号替换了反勾号
$squl="INSERT INTO `messages` (`id`,`name` ,`email` ,`subject` ,`content`,`userid` )VALUES ( null,'$name', '$mail', '$subject', '$content','');";
您正在尝试插入6列:
id
name
电子邮件
主题
内容
userid
NULL
$name
$mail
$subject
$content
第一组括号中列出了六个字段,值中只有五个字段。这就是列计数的含义。您有一个点,其中应该有一个逗号:
".$subject."`, `".$content."`.``);";
将最后一个点更改为逗号,您应该是金色的您的字段列表中有6个字段,但在值列表中仅插入5个值。看起来您有一个
而不是,
:
`, `".$subject."`, `".$content."`.``
^--- here
同样,没有理由像现在这样使用重复的字符串连接。PHP可以轻松地将变量插入双引号字符串:
$sql = "INSERT INTO .... (...) VALUES (NULL, '$name', '$mail', '$subject', '$content', '')";
请注意,“null”值没有被引用。反勾号用于转义保留字。如果要插入一个真正的数据库null,请使用空单词null
。如果您想输入一个文本字符串“null”,请正常引用它:“null”
(id,name ,email ,subject ,content,userid )
( NULL,".$name.", ".$mail.", ".$subject.", ".$content."**.**``);
您使用的是“.”而不是“您试图为六列指定五个值。看起来在最后两个值之间有一个句点而不是逗号;可能是打字错误吗?谢谢,但它还不起作用,但感谢您花宝贵的时间来发现问题:)非常感谢,我将它改为“$squl=”插入到“消息”('id'、'name'、'email'、'subject'、'content'、'userid')值('NULL'、'$name'、'$mail'、'$subject'、'$content'、')”);“;”但是我得到了这个错误“您的SQL语法有错误;请检查与您的MySQL服务器版本相对应的手册,以了解在“messages”('id'、'name'、'email'、'subject'、'content'、'userid')值附近使用的正确语法('NULL'在第1行)”请用您的代码更新顶部的问题。请记住将其缩进四个空格,以便将其视为代码块。很难通过注释排除语法错误。@hatef:现在您已将所有反勾号替换为常规引号。您不能在字段名周围使用引号-这会将字段名转换为字符串,因此它们不会被替换为字符串ted不再是fieldnames。我更改了它,但它不起作用。很抱歉耽误了您的时间:(您在我更新的答案中的SQL代码中得到了什么错误消息?它是有效的SQL,因此您的一个PHP变量一定有问题。我找到了它,还将“null”更改为null,谢谢,但它还不起作用!
(id,name ,email ,subject ,content,userid )
( NULL,".$name.", ".$mail.", ".$subject.", ".$content."**.**``);