PHP mysql_query - 使用所有变量进行更新

时间:2011-11-01 22:34:03

标签: php mysql

  

可能重复:
  Can a number used to name a sql column

我想弄清楚这段代码有什么问题

$query = "UPDATE $table SET '$_GET[qty]'=$_GET[newprice] WHERE 'id'='1'";

  

这是$ query的样子 - UPDATE retail_12x18 SET'25'= 100 WHERE'id'='1'

     

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在''25'= 100'附近使用正确的语法在第1行使用'id'='1'

我已经在每个方向放置了反引号,并且无法通过它,总是出现相同的错误信息。

enter image description here

2 个答案:

答案 0 :(得分:1)

在字段名称周围使用反引号:

UPDATE table SET `25` = '{thevalue}', `100` = '{thevalue}', `200` = '{thevalue}' WHERE wherefield = '{wherevalue}'

请参阅此处(查找backtick字词):http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

答案 1 :(得分:0)

在没有看到表格定义的情况下,确实有点难以确定,但是:

[1]可能是列类型。例如这一点:

type =“。$ _ GET ['type'];

尝试在不使用引号的情况下设置“type”列的值。如果“type”列的类型类似于varchar,它将失败,例如。

[2]如果您要使用数字列名

,则需要使用背景

[3]必须要说的是,代码中的主要问题是您将未转义的$ _GET值放入SQL查询中。任何人都可以通过将SQL放入页面的URL来挂载SQL注入攻击。非常糟糕的做法。

http://en.wikipedia.org/wiki/SQL_injection