insert - 表中未记录的字段

时间:2010-12-11 22:04:54

标签: sql mysql mysql-error-1064

INSERT INTO `jos1_content` 
  (`title`, `introtext`, `fulltext`, `state`, `sectionid`, `catid`, `attribs`)
VALUES  
  ($title, $introtext, $fulltext, 1, 1, $catid, 5)

查询由php脚本组成。变量的推导表明它们不是空的。 应phpMyAdmin的请求显示错误:

  

1064 - 您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在'附近使用正确的语法

3 个答案:

答案 0 :(得分:7)

您需要使用单引号来指示SQL的字符串 - 使用:

INSERT INTO `jos1_content` 
  (`title`, `introtext`, `fulltext`, `state`, `sectionid`, `catid`, `attribs`)
VALUES  
  ('". $title ."', '". $introtext ."', '". $fulltext ."', 1, 1, $catid, 5)

更安全的方法是使用:

$query = sprintf("INSERT INTO `jos1_content` 
                    (`title`, `introtext`, `fulltext`, `state`, `sectionid`, `catid`, `attribs`)
                  VALUES  
                   ('%s', '%s', '%s', 1, 1, %d, 5)",
        mysql_real_escape_string($title),
        mysql_real_escape_string($introtext),
        mysql_real_escape_string($fulltext),
        $catid);

参考:

答案 1 :(得分:7)

您需要用引号括起您插入到字符串类型字段中的PHP变量:

INSERT INTO `jos1_content` 
(`title`, `introtext`, `fulltext`, `state`, `sectionid`, `catid`, `attribs`)
VALUES  
('$title', '$introtext', '$fulltext', 1, 1, $catid, 5)

答案 2 :(得分:3)

阅读编程语言手册中的预备语句或使用mysql_escape_string