2012-07-14 103 views
0

我正在构建sorta原始模板系统,并将 中的某些限制放在某个用户级别可以访问的模板数量中。 所以我有这样Mysql建议:具有相同值的两个字段

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(自由用户)查询将excecute 这样的:

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

当两个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 
+2

这方面的一个更简洁的版本将是'WHERE的UserLevel IN(0,1)' – 2012-07-14 22:32:44

+0

因此,在情况下,不会发生什么事的UserLevel是0在两个他们? WHERE'UserLevel' = 0或'UserLevel' = 0; ? – inrob 2012-07-14 22:36:36

+0

Hey Zane Bien。我不熟悉那种做法。第一次听到这个消息时,我肯定会考虑这个问题。谢谢。 – inrob 2012-07-14 22:50:44

相关问题