MySQL查询将一个值设置为1,将所有其他值设置为0

时间:2012-07-17 14:17:55

标签: mysql

此查询旨在更新inUse变量,如果表单输入的结果,例如$ _POST ['eventID']匹配数据库中的eventID,从而将该事件的inUse值更改为1,将所有其他值更改为零。

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

数据库需要一个整数,但我担心因为我已经转储$ _POST ['eventID']的值,它显示为一个字符串。我尝试使用intval和int无济于事。

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

谢谢:)

2 个答案:

答案 0 :(得分:1)

试试这个:

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

这假设inUse是一个布尔值(在mysql中实现为TINYINT,其值为10,但无论如何,mysql之间转换boolean / int值就好了)

答案 1 :(得分:1)

我猜测来自PHP的查询类型。

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

如果该值为int,请尝试

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