MySQL,PHP获取每个类型的记录数


MySQL & PHP Get Num of Records for Each Type

我有一个MySQL数据库表,其中包含6种类型的记录我需要获得每种类型的记录总数然后为每个结果创建一个变量例如

wt = 3SPV = 33SHW = 78

等等…

我已经写了这个代码

$tquery = "SELECT equipment, COUNT(id) AS num FROM contract GROUP BY equipment"; 
$tresult = mysql_query($tquery) or die(mysql_error());
while($trow = mysql_fetch_array($tresult)){
echo "There are ". $trow['COUNT(id)'] ." ". $trow['equipment'] ." items.";
echo "<br />";
}

为每种类型需要一个变量的原因是我需要计算出一个百分比值来在图表中显示这些数据,我已经编写了这段代码,只要我从表中获得正确的数据,它就可以正常工作。

任何帮助都是很棒的,谢谢

首先,你引用的$trow['COUNT(id)'],这是不正确的;它应该以名称num(在SQL查询中定义)返回给您,因此您实际上应该使用$trow['num']

现在存储总数:

创建一个数组来包含总数。我们叫它$total。将其定义为while循环外的空数组:

$total = array();

然后在循环中,为$total数组赋值一个新元素,其中设备类型作为键,计数作为值:

$total[$trow['equipment']] = $trow['num'];

当循环结束时,您应该有一个包含所有总数的数组,您可以在其上执行计算。PHP为您提供了array_sum()count()函数(以及许多其他方便的函数),这些函数应该足以让您开始计算平均值和百分比。

试试这样写:

$tquery = "SELECT equipment, COUNT(id) AS num FROM contract GROUP BY equipment";
$tresult = mysql_query($tquery) or die(mysql_error());
while ($tabl = mysql_fetch_array($tresult)){
       echo "There are " . $tabl['num'] . " of " . $tabl['equipment'] . ".<br />";
}