2013-03-16 35 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支持所谓的“密钥强制转换” - 正如文档警告的那样,这可能不会始终受支持,并且可能会产生意外结果: