如何分别统计并显示注册管理员与用户的数量?
解决分别统计管理员和用户数量的问题
嘿,我明白你的需求啦!你原来的代码之所以统计的是总人数,是因为你的SQL查询没有对usertypes字段做筛选,直接拉取了所有用户的id。下面给你两种靠谱的修改方案,按需选用:
方案1:分别查询管理员和用户数量(简单直观)
这种方法逻辑清晰,容易理解,针对两种用户类型各写一条SQL查询即可:
<?php // 统计管理员数量 $admin_query = "SELECT id FROM register WHERE usertypes = 'admin'"; $admin_query_run = mysqli_query($connection, $admin_query); $admin_count = mysqli_num_rows($admin_query_run); // 统计普通用户数量 $user_query = "SELECT id FROM register WHERE usertypes = 'user'"; $user_query_run = mysqli_query($connection, $user_query); $user_count = mysqli_num_rows($user_query_run); // 输出结果 echo '<h4> Total Admin: '.$admin_count.'</h4>'; echo '<h4> Total User: '.$user_count.'</h4>'; ?>
方案2:一次查询获取两种数量(更高效)
如果想减少数据库查询次数、提升性能,可以用COUNT()聚合函数配合GROUP BY,一次查询就能拿到两种用户类型的统计结果:
<?php $query = "SELECT usertypes, COUNT(*) as count FROM register GROUP BY usertypes"; $query_run = mysqli_query($connection, $query); // 初始化两个计数变量 $admin_count = 0; $user_count = 0; // 遍历查询结果,给对应变量赋值 while ($row = mysqli_fetch_assoc($query_run)) { if ($row['usertypes'] == 'admin') { $admin_count = $row['count']; } elseif ($row['usertypes'] == 'user') { $user_count = $row['count']; } } // 输出结果 echo '<h4> Total Admin: '.$admin_count.'</h4>'; echo '<h4> Total User: '.$user_count.'</h4>'; ?>
小提示
- 记得确保你的数据库连接
$connection是正常可用的哦 - 如果
usertypes字段的值可能有大小写差异(比如Admin或USER),可以在SQL里用LOWER(usertypes) = 'admin'来统一匹配
内容的提问来源于stack exchange,提问作者Satinder Singh
相关产品推荐
相关产品推荐

