2010-05-12 54 views
0

需要使用PDO計算MySQL表中每個類別的行數。例如,我需要具有類別1,類別2等的條目數量。如果可能,我希望這樣做,而不必爲每個類別寫出SQL語句。使用PDO計算MySQL表中的行數

謝謝!

回答

5

你需要的SQL是這樣的:

SELECT category_name, COUNT(*) AS total FROM category_table 
GROUP BY category_name 

這將返回對每個類別一行的結果集。每行有兩列:類別名稱和具有該類別名稱的記錄總數。相同的技術適用於類別ID或您可能想要使用的任何其他密鑰。

你會使用這種方式:

$sql = 'SELECT category_name, COUNT(*) AS total FROM category_table '. 
     'GROUP BY category_name'; 

$db = new PDO($database, $user, $password); 
$results = $db->query($sql)->fetchAll(PDO::FETCH_ASSOC); 

// $results is now an array with the query results 

編輯:添加樣本PHP代碼。

+0

+1:不要忘記,如果添加其他列,那些列也需要添加到GROUP BY子句中。 – Powerlord 2010-05-12 20:28:43

+0

確實。更多的列需要被添加到GROUP BY子句中(這意味着每個類別將返回多於一行)或通過像COUNT,MAX,AVERAGE等聚合函數處理。 – Jon 2010-05-12 20:34:19

+0

非常感謝。我必須說,出於某種原因,陣列從來就不是我的強項。我正在處理三大類 - 「火災」,「EMS」和「專業」。只要我使用$ results [0] ['total'],$ results [1] ['total']等等,你的上面的例子就可以很好地工作了。我將如何去使用$ results ['Fire'] ['total ']或類似的東西?謝謝:) – NightMICU 2010-05-12 21:18:07