2013-03-16 59 views
1

出於某種原因,使用我的編輯腳本時出現此錯誤。 我甚至嘗試填寫POST值並通過PHPmyAdmin執行。這是我得到的錯誤:我的MySQL更新查詢有什麼問題?

#1064 - 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 'drop=1, sell=10, cash=10, law=7, boss=1 WHERE ID=11' at line 1 

這裏查詢:

UPDATE toondb集名= '$ _ POST [toonname]',tlaff = $ _ POST [tlaff],[類型= $ _ POST [ttype],toonup = $ _ POST [toonup],trap = $ _ POST [trap],lure = $ _ POST [lure],sound = $ _ POST [sound],throw = $ _ POST [throw],squirt = $ _ POST [ ],drop = $ _ POST [drop],sell = $ _ POST [sell],cash = $ _ POST [cash],law = $ _ POST [law],boss = $ _ POST [boss] WHERE ID = $ _ POST [ID]

這是一個填充值:

UPDATE toondb SET name ='ik',tlaff = 137,ttype = 2,toonup = 1,trap = 1,lure = 1,sound = 1,throw = 1,squirt = 1,drop = 1 ,出售= 10,現金= 10,法律= 7,老闆= 1,其中ID = 11

除了名字以外,所有列都是INT。名稱是varchar

+0

「drop」是一個保留字在MySQL中:http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html – CBroe 2013-03-16 21:17:12

+1

嗨,歡迎來到StackOverflow。請回滾您的編輯以將問題恢復爲原始格式。如果您喜歡,您可以對其中一個答案發表評論,但在接收答案後不要這樣更改。就目前而言,答案是毫無意義的。最後,如果您找到有用的答案,請對它們進行投票。如果它完全回答你的問題,則「接受」最佳答案。 – BellevueBob 2013-03-16 21:27:52

+0

哦對不起。如何回滾我的編輯?我不記得它到底是什麼 – llw 2013-03-17 02:17:10

回答

3

單詞drop是保留關鍵字。使用反引號來逃避它。

像這樣:

UPDATE toondb SET name='ik', tlaff=137, ttype=2, toonup=1, trap=1, lure=1, 
    sound=1, throw=1, squirt=1, `drop`=1, sell=10, cash=10, law=7, boss=1 WHERE ID=11 
2

你的問題就出在dropDROP是在MySQL中的保留字,所以你需要將其封裝在反引號

`drop` = 1 

但是,你有你的陳述其他一些問題。你很容易SQL Injection

+0

這聽起來不好..我可以修復它,所以我不太容易受到SQL注入? – llw 2013-03-17 09:30:15

+0

@alfredo不要將未經過濾的用戶輸入($ _POST/$ _ GET)傳遞給您的MySQL查詢。理想情況下,您應該使用預準備語句,可以使用[PDO](http://php.net/manual/en/class.pdo.php)或[MySQLi](http://www.php.net/manual/en /book.mysqli。php) – Jeremy1026 2013-03-17 21:34:32

+0

有沒有指導如何做到這一點?或者你可以告訴我?我從來沒有這樣做過,我只是在過去的幾個月中瞭解了我目前的知識 – llw 2013-03-18 03:01:36

0

試着把你的列名反引號,以防萬一你正在使用保留字。

0

已發佈的答案是正確的(DROP是保留字);我只想提一點,像$_POST[toonname]這樣的語法在技術上是不正確的 - 非數字索引應該被引用:$_POST["toonname"]$_POST['toonname']。您使用的語法僅適用於PHP,因爲PHP支持所謂的「密鑰強制轉換」 - 正如文檔警告的那樣,這可能不會始終受支持,並且可能會產生意外結果: