php - Mysql建议: two fields with the same value

标签 php mysql mysqli

我正在构建某种原始模板系统并施加一些限制 特定用户级别可以访问的模板数量。 所以我有一些这样的代码

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

关于php - Mysql建议: two fields with the same value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11487848/

相关文章:

mysql - 没有信息插入数据库中的表中

php - 我的add.php出现500服务器错误

php - MySQLi count(*) 始终返回 1

php - 在linux服务器上安装dlib并尝试将symfony2与sql服务器连接

php - 用多维数组垂直填充 HTML 表

php - 递归遍历 DOM 树并删除不需要的标签?

Mysql子查询返回不正确的结果

php - 如果旁边有 '-',正则表达式只会添加 4 个数字

mysql - 根据数字匹配将两个表合并为第三个表

mysql - 如果列值不在一组不同列的值中,则 SQL 选择行