你好男孩和女孩我试图更新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());
我出错了吗?
答案 0 :(得分:2)
如果我没弄错的话,你错过了'1'和WHERE
之间的空格。当你想要转义列名
所以你的代码变成了:
$blah = mysql_query("UPDATE users SET `".$_SESSION['gymleader']."`='1' WHERE username = '".$_SESSION['username']."'")
注意列名称周围的`而不是'{在SET
之后)。
进一步可能的改进:
'1'
替换为1
(不带')$_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());
注意我已将'
替换为`