我正在构建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."'
因此,任何用户级别高于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";
}
我觉得这样更好。
当两个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