2010-05-12 85 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