选择db列,其中包含同一行中已定义的列

时间:2017-08-31 11:03:28

标签: php mysql

可能有点令人困惑,但让我解释一下。

所以我有这个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,所以我觉得有点迷茫,如果你分享答案,请解释你为什么使用你的代码以及我错在哪里谢谢你。

2 个答案:

答案 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>';
}

尝试此操作...逐个命令可以先分类状态然后再按状态分组数据。