3

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

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

这是mysql_error:

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

mysql_real_escape_string()除了查询中的 FileSize 和 FileTransferSize 之外,我做了所有事情。你能告诉我我做错了什么吗?谢谢!

4

6 回答 6

13

该错误告诉您错误发生在 text key,并且非常正确:key是 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'
)
于 2012-12-27T13:43:07.737 回答
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是关键字,所以你必须使用我上面使用的反引号。有关更多信息,请检查以下问题 选择带有关键字名称的列

于 2012-12-27T13:44:21.567 回答
4

key 是保留字,如果不使用 backtics,就不能在列名中使用它。尝试这个

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')
于 2012-12-27T13:44:53.483 回答
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) 两者都是保留词,良好的做法是始终使用 ` 符号作为用户定义的标识符。

于 2012-12-27T13:45:04.733 回答
0

KEY是mysql的保留关键字

尝试其他列名或像那样做反引号

于 2012-12-27T13:53:51.180 回答
0

问题是 key 是 mysql 的保留关键字,你不能用它作为列名,如果你真的想用反引号把它括起来

key

于 2012-12-27T13:55:18.663 回答