0

出于某种原因,我在使用我的编辑脚本时遇到了这个错误。我什至尝试填写POST值并通过PHPmyAdmin. 这是我得到的错误:

#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 SET name='$_POST[toonname]', tlaff=$_POST[tlaff], ttype=$_POST[ttype], toonup=$_POST[toonup], trap=$_POST[trap], lure=$_POST[诱惑],声音=$_POST[声音],抛出=$_POST[抛出],喷=$_POST[喷射],下降=$_POST[下降],卖出=$_POST[卖出],现金=$_POST[现金] , 法律=$_POST[法律], 老板=$_POST[老板] WHERE ID=$_POST[ID]

这是填充值的那个:

更新 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, 法律=7, 老板=1 WHERE ID=11

所有列都INT在名称之外。名称是一个varchar

4

4 回答 4

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
于 2013-03-16T21:16:02.103 回答
2

你的问题在于dropDROP是 MySQL 中的保留字,因此需要将其封装在反引号中

`drop` = 1

但是,您的陈述也有其他问题。您容易受到SQL 注入的影响

于 2013-03-16T21:16:09.380 回答
0

尝试将列名放在反引号中,以防万一您使用保留字。

于 2013-03-16T21:17:46.970 回答
0

已经发布的答案是正确的(DROP是保留字);我只想指出,语法 like$_POST[toonname]在技术上是不正确的——非数字索引应该被引用:$_POST["toonname"]$_POST['toonname']. 您使用的语法仅有效,因为 PHP 支持称为“密钥转换”的东西 - 正如文档警告的那样,这可能并不总是被支持,它可能会产生意想不到的结果: http: //php.net/manual/en /language.types.array.php#language.types.array.donts

于 2013-03-16T21:23:22.423 回答