Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL查询有问题吗_Php_Mysql - Fatal编程技术网

Php SQL查询有问题吗

Php SQL查询有问题吗,php,mysql,Php,Mysql,我正在使用此查询(我已更改): 我得到这个错误: 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第1行“messages”(“id”,“name”,“email”,“subject”,“content”,“userid”)值(null)”附近使用的正确语法 是什么导致了这种情况?好吧,这是您从SQL得到的最清晰的消息。您尝试在6列中插入5个值 问题是最后两个值之间没有逗号。取而代之的是一个,这使解析器认为它只是一个值。`您在这里使用了句点而不是逗号,因此函数在需要6列时只接

我正在使用此查询(我已更改):

我得到这个错误:

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在第1行“messages”(“id”,“name”,“email”,“subject”,“content”,“userid”)值(null)”附近使用的正确语法


是什么导致了这种情况?

好吧,这是您从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
  • 但仅指定了5个值:

  • 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."**.**``);