首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL查询,只显示用户一次

MySQL查询,只显示用户一次
EN

Stack Overflow用户
提问于 2017-06-01 02:58:37
回答 1查看 62关注 0票数 0

晚上好,

我正在尝试修改用户面板中的一些代码,其中包括用户角色。我希望某些角色为他们所处的每个角色显示用户,但某些角色我只希望它们显示一次。

用于此的MySQL表是:

代码语言:javascript
运行
复制
id | username | password | displaygroup | usergroups
1  | User A   | Pass A   | 2            | 1,2,3
2  | User B   | Pass B   | 5            | 1,2,3,4,5

例如,如果用户A在第1组、第2组和第3组中,则应为它们所属的每个组列出三次。一旦用户在一个更高的组中,比如用户B,我希望他们只显示一次,在他们的最高组。

正在使用的旧查询如下:

代码语言:javascript
运行
复制
$query = $db->query("SELECT * FROM users WHERE displaygroup = '2' ORDER BY id");
while ($array = $db->assoc($query)) {
  echo $array['username'];
}

对于该查询,用户A只显示一次。

我尝试了以下几点:

代码语言:javascript
运行
复制
$query = $db->query("SELECT * FROM users ORDER BY id");
while ($array = $db->assoc($query)) {
  $role = explode(',', $array['usergroups']);
  foreach ($role as $value) {
    if ($value == 1) {
      echo $array['username'];
    }
    if ($value == 2) {
      echo $array['username'];
    }
  }
}

有了以上所述,它对用户A非常好,因为它向用户展示了他们所在的组1、2和3。

但是,用户B现在出现了,因为他们也在这些角色中。

如何才能使用户A继续显示组1、2和3,而用户B只显示组5?

更新

我的问题似乎有些混乱。我很想这么做:

集团1

用户A

集团2

用户A

集团3

用户A

集团4

集团5

用户B

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-01 03:14:30

您可以反转role数组并从最后一个值进行检查。如果存在更高的值(如5 ),则执行操作并中断循环。

代码语言:javascript
运行
复制
$query = $db->query("SELECT * FROM users ORDER BY id");
while ($array = $db->assoc($query)) {
  $role = explode(',', $array['usergroups']);
  $role = array_reverse($role);
  foreach ($role as $value) {
    if($value == 5) {
        echo $array['username'];
        break;
    }
    if ($value == 1) {
      echo $array['username'];
    }
    if ($value == 2) {
      echo $array['username'];
    }
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44297779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档