2012-12-27 69 views
3

我可能在查詢的語法上犯了一個愚蠢的錯誤,但我無法縫合來修復它。這是我的程序試圖執行查詢:爲什麼我不能將此插入到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:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key, bytes) VALUES('tommy3244/tesABCscdsdasdasdD.testtest', 'tommy3244', '%27 %D' at line 1

我上除了文件大小和FileTransferSize查詢一切正常mysql_real_escape_string()。你能告訴我我做錯了什麼嗎?謝謝!

+0

這是什麼都用PHP做什麼? –

+0

我的腳本是PHP –

+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' 
) 
+0

我只是將引號括起來。它現在很好用! –

+0

@ Tommy3244:最好在反引號(_not_「quotations」)中加入_all_字段名稱。這樣可以保持一致性並防止您再次遇到問題。它也有助於語法突出顯示,並可能使解析速度稍快。 –

+0

好吧,我認爲這是單引號! :-) 謝謝! –

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

+1

一個很好的答案_解決問題。您的建議查詢也非常不一致。 –

+1

@ArashMilani - 感謝您的評論。我編輯了我的答案 –

4

關鍵是保留字和列名不使用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') 
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')  

OK,

syntax to use near 'key, bytes)都是保留字,比較好的做法是始終使用用戶定義的標識符`跡象。

+1

一個很好的答案_explains_問題。 –

0

KEY保留關鍵字爲MySQL

嘗試其他列名或使反引號這樣的``

0

問題是關鍵是的mysql的保留關鍵字,你不能把它作爲列名,如果你真的想那麼它括反引號字符內

key

相關問題