2016-05-28 3 views
1

UIDというフィールドに基づいて「上位15個」の結果を作成しようとしていますが、PHPのカウント列を印刷しない以外はPHPMyAdminでも役に立ちます。PHP/MySQLクエリで生成された列を印刷できません

([ID] => 18 [Date] => 2016-05-28 13:58:05 [Name] => a [UID] => a [Reason] => a [Staff] => Patrick [Count] => 2) 

([ID] => 19 [Date] => 2016-05-28 13:58:07 [Name] => b [UID] => b [Reason] => b [Staff] => Patrick [Count] => 1) 

PHPコード:

if($result) { 
    while($row = mysqli_fetch_assoc($result)) { 
      echo "<tr>"; 
    echo "<td>" . $row['ID'] . "</td>"; 
    echo "<td>" . $row['Date'] . "</td>"; 
    echo "<td>" . $row['Name'] . "</td>"; 
    echo "<td>" . $row['UID'] . "</td>"; 
    echo "<td>" . $row['Count'] . "</td>"; 
echo "</tr>"; 
print_r($row); 
echo "<br>"; 

    } 

しかし、出力は私のカウント列が表示されないと、私はかなりなぜうまくいかないことができ

SELECT * , COUNT(UID) AS Count 
FROM UserReports 
GROUP BY `UID` 
ORDER BY Count DESC 
LIMIT 15 

ここで返す配列です。事前に

Missing Column

感謝。

+0

あなたのHTMLだと思います。スクリーンショットには6列ありますが、ループ内には5列しかありません。あなた自身のスクリーンショットを見てください。あなたはそこに2と1を持っています。あなたのHTMLソースも見てください。 –

+0

ありがとう、完全にそこに見落とされた! – Patrick

+0

あなたは大歓迎です。解決されたかどうか?ちょうど興味があり、それが質問の解決策として掲示されるべきかどうか。 –

答えて

1

本当の問題だったと回答してください。

あなたはスクリーンショットに6列ありますが、あなたのループには5 <td>しかありません。あなた自身のスクリーンショットを見てください。そこに2と1のカウントがあります。あなたのHTMLソースも見てください。それはまた「ツール」です。

ここで起こっていることは、反復された値がシフトされていることです。

あなたはそれらに一致する必要があります。

0

select *group byを使用しないでください。これはMySQLの(ミス)機能であり、標準でも他のデータベースでもサポートされていません。代わりに

、関心の列に焦点を当てて:あなたは、このようなNAMEなどの他の列を、必要な場合のいずれか、

SELECT UID, COUNT(UID) AS Count 
FROM UserReports 
GROUP BY `UID` 
ORDER BY Count DESC 
LIMIT 15; 

集計関数(MAX(NAME))でそれらをラップするかGROUP BYに含めます。

+0

質問の下に残したコメントを見てください。私はそれが適切かもしれないと思う。編集:私はそれに彼の応答を与えて右だったようだ。 –

関連する問題