SQL语法错误我哪里错了?

时间:2011-12-29 12:45:23

标签: php mysql sql

你好男孩和女孩我试图更新sql但我想我忘记了'或' 我得到这个错误消息

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

如果我把代码带出页面加载了其余的脚本,那么问题在于这段代码。但需要它做两次更新。

$blah = mysql_query("UPDATE users SET '".$_SESSION['gymleader']."'='1'WHERE username = '".$_SESSION['username']."'")
or die(mysql_error());  

我出错了吗?

3 个答案:

答案 0 :(得分:2)

如果我没弄错的话,你错过了'1'和WHERE之间的空格。当你想要转义列名

时,你应该使用反引号(`)

所以你的代码变成了:

$blah = mysql_query("UPDATE users SET `".$_SESSION['gymleader']."`='1' WHERE username = '".$_SESSION['username']."'")

注意列名称周围的`而不是'{在SET之后)。

进一步可能的改进:

  1. 如果列是INT类型,您可以将'1'替换为1(不带')
  2. 您不应该直接使用$_SESSION$_POST$_GET或其他可以由您的查询中的用户更改的值。在SQL injection上进行Google搜索以获取更多信息

答案 1 :(得分:2)

UPDATE user SET field = '1' WHERE ...

而不是

UPDATE user SET 'field' = '1' WHERE ...

如果您的字段是int类型,则可以使用

UPDATE user SET field = 1 WHERE

如果要转义字段名称,请使用

`field`

在反引号中

答案 2 :(得分:1)

除了这样的代码看起来不错的事实,假设你有一个名为Brock的列,那么你应该使用这种类型的引号:

$blah = mysql_query("UPDATE users SET `".$_SESSION['gymleader']."`='1' WHERE username = '".$_SESSION['username']."'")
or die(mysql_error());

注意我已将'替换为`