0

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

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."' 

因此,任何用户级别高于 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";
}

我认为这种方式更好。

4

1 回答 1

1

当两个UserLevel值不相同时,您将不会得到任何结果。你应该改变它ANDOR这样它就可以工作了。

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
于 2012-07-14T22:30:41.847 回答