可能有点令人困惑,但让我解释一下。
所以我有这个DB
ID | username | status
1 | Bob | On
2 | James | On
3 | Jack | Off
4 | Bob | Off
5 | Arthur | On
如何回显所有包含状态的名称?我试过像
这样的东西$reponse = $pdo->query('SELECT username, COUNT(1) as CNT FROM users GROUP BY status;');
$donnees = $reponse->fetch();
foreach ( $reponse as $key => $value ) {
echo '<li><a href="#"><i class="fa fa-circle-o"> '.$value['username'].'</i></a></li>';
}
预期结果
回声: 短发 詹姆士 亚瑟
但它只打印出第一个离线的ID(在这种情况下是杰克)。
谢谢
PS:我现在正在学习PHP / MySQL,所以我觉得有点迷茫,如果你分享答案,请解释你为什么使用你的代码以及我错在哪里谢谢你。答案 0 :(得分:1)
根据您的预期结果,您在此处不需要group by
:
$reponse = $pdo->query('SELECT username FROM users WHERE status="On"');
这将给你结果:
username
----------
Bob
James
James
如果你想数数:
$reponse = $pdo->query('SELECT username,count(1) as cnt FROM users WHERE status="On" group by username');
username cnt
----------------
Bob 1
James 2
答案 1 :(得分:0)
$reponse = $pdo->query('SELECT username, COUNT(1) as CNT FROM users WHERE status='On;');
$donnees = $reponse->fetch();
foreach ( $reponse as $key => $value ) {
echo '<li><a href="#"><i class="fa fa-circle-o"> '.$value['username'].'</i></a></li>';
}
尝试此操作...逐个命令可以先分类状态然后再按状态分组数据。