按组列出行数

时间:2017-03-09 07:54:56

标签: php mysql database

我有一个成员加入的数据库,我正在尝试显示每个国家/地区的成员数量。

以下是我用来显示国家/地区标志的代码:

    <?
       foreach( $sorters as $sortvalue )
      if( $sortvalue == '' )
         echo '<li> <a href="' . $list_url . $connector . $sortfield .
            '=none">None given</a> </li>';
      else
         echo '<a href="' . $list_url . $connector . $sortfield .
            '=' . $sortvalue . '"><img src="' . $flags . str_replace(' ', '_', $sortvalue) . '.gif" title="' . $sortvalue . '" alt="' . $sortvalue . '"></a> ' . $countrynum . ' fans<br>';
}
?>

我确实找到了答案,并且继续看到相同类型的代码,但我还没有能够让它为我工作。

我试过这个:

$countrynum = SELECT COUNT(name) FROM $table WHERE country = $sortvalue;
我在foreach声明之后插入的

。这个(以及我试过的每一次迭代都给了我解析错误:语法错误,意外&#39; COUNT&#39;(T_STRING)...

我最接近解决这个问题的方法是使用这个代码(但是,我不应该重新连接数据库吗?):

<?
   foreach( $sorters as $sortvalue )
      if( $sortvalue == '' )
         echo '<li> <a href="' . $list_url . $connector . $sortfield .
            '=none">None given</a> </li>';
      else
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
      foreach($dbh->query('SELECT country, COUNT(*) FROM $table GROUP BY country') as $row) {
         echo '<a href="' . $list_url . $connector . $sortfield .
            '=' . $sortvalue . '"><img src="' . $flags . str_replace(' ', '_', $sortvalue) . '.gif" title="' . $sortvalue . '" alt="' . $sortvalue . '"></a> ' . $row['COUNT(*)'] . ' fans<br>';
}
?>

这给了我正确的行(成员)计数,但是在每个数字旁边显示了相同的单个标志,而不是带有成员数量的相应标志。

我确定这对你们很多人来说可能非常简单,但我是新手,他们真的想学习编码,到目前为止,这主要意味着切割,粘贴和大量的试用和错误。 非常感谢任何援助(和学习资源建议)。 :)

1 个答案:

答案 0 :(得分:0)

由于标志图片来源取决于$sorters$sortvalue,因此对于所有国家/地区都是相同的。看看循环。对于每个$sorters as $sortvalue,该链接将是多个国家/地区,但img来源将对所有国家/地区都相同。