2016-09-10 1 views
0

Ich habe Tabelle mit Datensätzen, die verschiedene "Status" haben. Bisher verwende ich separate Abfragen, um die Anzahl dieser Datensätze abhängig vom "Status" zu nennen. Ich denke (hoffe), es gibt einen besseren Weg (schneller). Irgendwelche Ideen?PHP MySQL- 1 Abfrage Zählen und Anzeigen von Datensätzen Besad auf verschiedenen "Status"

My SQL:

$res1 = $mysqli->query("SELECT status FROM test WHERE status='1'") 
$num_1 = mysqli_num_rows($res1); 

$res2 = $mysqli->query("SELECT status FROM test WHERE status='2'") 
$num_2 = mysqli_num_rows($res2); 

$res3 = $mysqli->query("SELECT status FROM test WHERE status='3'") 
$num_3 = mysqli_num_rows($res3); 

MY PHP

echo $num_1; 
echo $num_2; 
echo $num_3; 
+2

nie die Zeilen auszuwählen, sie zu zählen . fragen Sie eine Datenbank zu zählen und geben Sie das Ergebnis –

Antwort

1

Wenn Sie nur die Anzahl der einzelnen status erhalten müssen Sie es so in einer Abfrage unter Verwendung der Klausel group by tun können.

select `status`,count(`status`) as 'count' from `test` group by `status`; 

Dieses ein Re-Cord wie diese zurückkehren würde:

+--------+-------+ 
| status | count | 
+--------+-------+ 
|  1 | 10 | 
|  2 |  8 | 
|  3 | 12 | 
|  4 |  8 | 
|  5 |  7 | 
|  6 |  3 | 
|  7 |  9 | 
+--------+-------+ 

So in PHP, nachdem Sie die Abfrage ausgeführt haben Sie so etwas wie tun könnte:

while($rs=$result->fetch_object()) echo $rs->status.'='.$rs->count; 



$dbhost = 'localhost'; 
$dbuser = 'xxx'; 
$dbpwd = 'xxx'; 
$dbname = 'xxx'; 
$db = new mysqli($dbhost, $dbuser, $dbpwd, $dbname); 

$sql="select `status`, count(`status`) as 'count' from `test` group by `status`;"; 
$result=$db->query($sql); 

while($rs=$result->fetch_object()) { 
    echo '<div>Status: ' . $rs->status.', Total: ' . $rs->count . '</div>'; 
} 

$db->close(); 
$db=null; 
+0

danke - war gerade dabei, das – RamRaider

+0

zu ändern, aber wie funktioniert das Anzeigen von Zählern getrennt basierend auf Ihrer Abfrage? – Nita

+0

Status werden in db gesetzt – Nita

Verwandte Themen