为什么我不能将其插入MySQL?

时间:2012-12-27 13:41:46

标签: mysql

我可能在我的查询语法上犯了一个愚蠢的错误,但是我无法修复它。这是我的程序试图执行的查询:

INSERT INTO filez (
  filename,
  uploadedby,
  dateuploaded,
  public,
  FileSize,
  FileTransferSize,
  key,
  bytes
)
VALUES(
  'tommy3244/tesABCscdsdasdasdD.testtest',
  'tommy3244',
  '%27 %December %2012, %7:%32:%15%AM',
  1,
  7,
  7,
  '`',
  'TestDoc'
)

这是mysql_error:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在'key,bytes'附近使用正确的语法VALUES('tommy3244 / tesABCscdsdasdasdD.testtest','tommy3244','%27%D'在第1行

除了查询中的FileSize和FileTransferSize之外,我在一切上都mysql_real_escape_string()了。你能告诉我我做错了什么吗?谢谢!

6 个答案:

答案 0 :(得分:13)

错误告诉您错误发生在文字key上,并且非常正确:key is a reserved word in MySQL

如果您将其用作字段名称,则必须将其括在反引号(`)中;无论如何,这是一个很好的通用做法。

所以:

INSERT INTO `filez` (
  `filename`,
  `uploadedby`,
  `dateuploaded`,
  `public`,
  `FileSize`,
  `FileTransferSize`,
  `key`,
  `bytes`
)
VALUES(
  'tommy3244/tesABCscdsdasdasdD.testtest',
  'tommy3244',
  '%27 %December %2012, %7:%32:%15%AM',
  1,
  7,
  7,
  '`',
  'TestDoc'
)

答案 1 :(得分:4)

尝试使用以下查询

INSERT INTO filez (filename, uploadedby, dateuploaded, public, FileSize, FileTransferSize, `key`, bytes) VALUES
('tommy3244/tesABCscdsdasdasdD.testtest', 'tommy3244', '%27 %December %2012, %7:%32:%15%AM', 
1, 7, 7, '`', 'TestDoc')

key是关键字,因此您必须使用上面使用的反引号。 有关更多信息,请查看以下问题 Select a column with a keyword name

答案 2 :(得分:4)

键是保留字,如果不使用背景,则无法在列名中使用它。试试这个

INSERT INTO filez (`filename`, `uploadedby`, `dateuploaded`, `public`, `FileSize`, `FileTransferSize`, `key`, `bytes`) VALUES('tommy3244/tesABCscdsdasdasdD.testtest', 'tommy3244', '%27 %December %2012, %7:%32:%15%AM', 1, 7, 7, '`', 'TestDoc')

答案 3 :(得分:3)

 INSERT INTO `filez` (`filename`, `uploadedby`, `dateuploaded`, 
                    `public`, `FileSize`, `FileTransferSize`, 
                     `key`, `bytes`) 
        VALUES('tommy3244/tesABCscdsdasdasdD.testtest',   'tommy3244', 
                '%27 %December %2012, %7:%32:%15%AM', 1, 7, 7, '`', 'TestDoc')    

好的,

syntax to use near 'key, bytes)都是保留字,良好做法总是使用`sign来表示用户定义的标识符。

答案 4 :(得分:0)

KEY是mysql的保留关键字

尝试其他列名称或像`

那样制作反引号

答案 5 :(得分:0)

问题关键是mysql的保留关键字,你不能将它用作列名,如果你真的想把它包含在反引号字符中

key