2012-07-17 3916 views
1

该查询用于更新inUse变量,如果表单输入的结果(例如, $ _POST ['eventID']匹配数据库中的eventID,从而将该事件的inUse值更改为1,将其他所有值更改为零。MySQL查询将一个值设置为1,将所有其他值设置为0

mysql_query("UPDATE events SET inUse=IF('$_POST['eventID']' = eventID, 1, 0)"); 

数据库需要一个整数,但我很担心,因为我已经倾倒了$ _ POST [“EVENTID”]这是显示为一个字符串值。我试过用intval和int无济于事。

或者是我的查询语法中的问题?

谢谢:)

+1

你'IF()'不到风度有一个')' – 2012-07-17 14:25:53

回答

1

试试这个:

UPDATE events SET 
inUse = ('$_POST['eventID']' = eventID); 

这假定inUse是一个布尔值(这在MySQL作为TINYINT与价值观要么10实现,但无论情况下,MySQL转换之间的布尔值/整数值就好)

1

我从查询类型是PHP的猜测。

无论你的语法有什么问题(这是一个缺失的括号是不是?),真的不使用那个帖子。您是否尝试将“'); DROP TABLE events”的值发送到您的帖子变量呢?如果没有,我相信别人会!

如果该值是一个int,尝试

$num = (int)$_POST['eventID']; 
mysql_query("UPDATE events SET inUse=($num = eventID), 1, 0"); 
+0

非常感谢。这真的有帮助。我在错误的地方使用(int),因此它不工作,也欢呼语法更正!再次感谢。 – 2012-07-17 14:33:54

+0

只是在查询中发帖让我不寒而栗。我经营一家小商店,每天通过我的帖子运行约5个人,并使用自动化工具获取尝试sql注入攻击的变量 – Woody 2012-07-17 14:50:51