2016-05-28 3 views
1

Ich versuche, eine "Top 15" Ergebnisse basierend auf einem Feld namens UID zu bauen, funktioniert gut, außer nicht die Anzahl Spalte in PHP drucken, tut es in PHPMyAdmin obwohl.PHP/MySQL kann Spalte nicht durch Abfrage generiert

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

Hier ist die Rückkehr Array:

([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-Code:

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>"; 

    } 

Aber der Ausgang zeigt nicht die Zählspalte für mich, und ich kann nicht so recht geklappt, warum .

Missing Column

Vielen Dank im Voraus.

+0

Ich denke, es ist Ihr HTML. Sie haben 6 Spalten im Screenshot, aber nur 5 in Ihrer Schleife. Schau dir deinen eigenen Screenshot an. Du hast 2 und 1 drin. Sehen Sie sich auch Ihre HTML-Quelle an. –

+0

Danke, völlig übersehen, dass da! – Patrick

+0

Gern geschehen, Patrick. Gelöst oder nicht? Einfach nur neugierig und ob es als Lösung für die Frage gepostet werden sollte. –

Antwort

1

Kommentar zu beantworten, zu sehen, es war das eigentliche Problem.

Sie haben 6 Spalten im Screenshot, aber nur 5 <td> ist in Ihrer Schleife. Schau dir deinen eigenen Screenshot an. Du hast 2 und 1 Zählungen drin. Sehen Sie sich auch Ihre HTML-Quelle an. es ist auch ein "Werkzeug".

Was hier passiert ist, dass die iterierten Werte verschoben wurden.

Sie müssen sie abgleichen.

0

Verwenden Sie nicht select * mit group by. Dies ist eine (falsche) Funktion in MySQL, die weder vom Standard noch von anderen Datenbanken unterstützt wird.

Stattdessen konzentrieren sich auf die Spalten von Interesse:

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

Wenn Sie andere Spalten wollen, wie NAME, entweder wickeln sie in Aggregationsfunktionen (MAX(NAME)) oder sind sie in der GROUP BY.

+0

Werfen Sie einen Blick auf einen Kommentar Ich ging unter der Frage. Ich denke, es könnte relevant sein. Edit: Es scheint, als hätte ich recht, wenn ich darauf reagiere. –

Verwandte Themen