1

MySql データベースで最も頻繁に表示される上位 3 つの名前をリストしようとしています。

これは私がやっていることです:

        $nameQuery = "SELECT PeopleName, COUNT(*) AS totalNumber FROM finaldb ORDER BY        COUNT(PeopleName) LIMIT 5";
        $nameResult = mysql_query($nameQuery);
        while($data = mysql_fetch_array($nameResult)) {

              $name = $data['totalNumber'];
        }

 echo $name;

しかし、それはうまくいかないようです。助言がありますか?

私のDBはPeopleName、IDで構成され、finaldbと呼ばれます。

4

4 に答える 4

2

Group By がありません。次のクエリを試してください。

$nameQuery = "SELECT PeopleName, COUNT(PeopleName) AS totalNumber FROM finaldb GROUP BY PeopleName ORDER BY        COUNT(PeopleName) LIMIT 5";
于 2013-07-16T16:00:20.270 に答える
1

ループは、引き出した名前を保持していません。前の名前を次の値で上書きするだけです。値の配列を作成するか、少なくともループ内で出力を行う必要があります。例えば

$names = array();
while(...) {
   $names[] = array('name' => $data['PeopleName'], 'total' => $data['totalNumber']);
}
var_dump($names);
于 2013-07-16T16:00:28.897 に答える