我可能在我的查询语法上犯了一个愚蠢的错误,但是我无法修复它。这是我的程序试图执行的查询:
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()
了。你能告诉我我做错了什么吗?谢谢!
答案 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