Mysql建议:两个具有相同值的字段

时间:2012-07-14 22:27:51

标签: php mysql mysqli

我正在构建sorta原始模板系统并设置一些限制 在某个用户级别可以访问的模板数量中。 所以我有一些像这样的代码

if (is_premium($session_user_id)==true){
    $userlevel = premium_level($session_user_id);
} else {
    //if the user is not premium
    $userlevel = 0;
}

然后在我拥有的mysql上:

SELECT FROM `galleries` where `UserLevel` = 0 and `UserLevel` ='".$userlevel."' 

因此,任何userlevel大于0的用户都可以访问所有免费用户模板和他的用户级模板。希望你还清楚,因为我不确定这是不是 最好的办法,但无论如何。

因此,在任何一种情况下,查询都将包含两个值 第一个:UserLevel` = 0,将始终为0,第二个可能会因用户级别而异,但在用户级别为0(免费用户)的情况下,查询将会超出 像这样:

   SELECT FROM `galleries` where `UserLevel` = 0 and `UserLevel` =0

我只是问,这有什么问题吗? userlevel = 0和userlevel = 0?

我想节省一些时间来构建条件查询。

谢谢。

更新 因此,在您的反馈后,我决定进行条件查询。感谢您的时间。 现在看来它是这样的:

if (is_premium($session_user_id)==true){
    //Check premium accont level
    $userlevel = premium_level($session_user_id);
    $statement = "`galleries` where `UserLevel` = 0 OR `UserLevel` ='".$userlevel."' ";
} else {
    //if the user is not premium
    $userlevel = 0;
    $statement = "`galleries` where `UserLevel` = 0";
}

我认为这样做会更好。

1 个答案:

答案 0 :(得分:1)

当两个UserLevel值不相同时,您将得不到任何结果。您应该将AND更改为OR,以便它可以正常运行。

WHERE `UserLevel` = 0 AND `UserLevel` = 1; // no results, can't be 1 AND 0

改为使用:

WHERE `UserLevel` = 0 OR `UserLevel` = 1; // returns values where level = 0 OR level = 1