遇到SQL查询问题

时间:2011-10-04 19:43:29

标签: php mysql

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

// 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行

造成这种情况的原因是什么?

7 个答案:

答案 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列:

  1. id
  2. name
  3. email
  4. subject
  5. content
  6. userid
  7. 但是只指定了5个值:

    1. NULL
    2. $name
    3. $mail
    4. $subject
    5. $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中只有五个字段。这就是列数的含义。