在PHP中迭代返回的SELECT计数
我有一个名为“事件”的SQL表,其中保存了有关学校行为事件的信息 我有下面的SQL语句,它返回每个“类型”的出现次数在PHP中迭代返回的SELECT计数,php,sql,pdo,Php,Sql,Pdo,我有一个名为“事件”的SQL表,其中保存了有关学校行为事件的信息 我有下面的SQL语句,它返回每个“类型”的出现次数 SELECT `type`, count(*) FROM `incidents` WHERE `studentID` = :id GROUP BY `type` 基本上,我希望创建一个图表,在“事件”表中显示每种事件类型的发生次数 我把它返回的东西都扔掉了,我得到了这个 array(2) { [0]=> array(4) { ["type"]
SELECT `type`, count(*) FROM `incidents` WHERE `studentID` = :id GROUP BY `type`
基本上,我希望创建一个图表,在“事件”表中显示每种事件类型的发生次数
我把它返回的东西都扔掉了,我得到了这个
array(2) {
[0]=> array(4) { ["type"]=> string(9) "Classwork" [0]=> string(9) "Classwork" ["count(*)"]=> string(1) "3" [1]=> string(1) "3" }
[1]=> array(4) { ["type"]=> string(8) "Bullying" [0]=> string(8) "Bullying" ["count(*)"]=> string(1) "1" [1]=> string(1) "1" }
}
我真的很难解析它来创建有意义的输出。我如何循环这个数组并输出每个事件类型的数量?例如,要输出:
3 classwork incident
1 bullying incident
我试着用foreach测试输出,但它只是说我不能用“type”偏移数组
因为$rows是一个包含其他数组(矩阵)的数组,所以循环可能需要2个。试试这个:
for(int $i=0;$i < count($rows); $i++){
for(int $j=0; $j< count($rows[i]); $j++). {
echo $rows[$i][$j];
}
echo $rows[$i]["type"];
echo $rows[$i]["count*"];
for(int$i=0;$i
}我建议首先为“count(*)提供一个别名。例如:碳纳米管 然后切换
$项目
和$行
:
foreach($rows as $item){
echo($item["cnt"]);
}
此外,您还可以尝试使用,而使用fetch(PDO::fetch_ASSOC)
进行循环,这样它只返回一次具有关联名称的值。如果HTML不是您想要的输出,请在“事件”之后使用\n
而不是
循环将按要求输出:
3 classwork incident
1 bullying incident
你试过什么吗?你能用你的代码更新这个问题吗?只需循环返回值并从每一行回显你想要的索引。我已经用我的尝试更新了这个问题。问题是我不知道如何迭代可以将所有数据存储到一个表中,并获取您想要的任何内容选择类型,
studentID`,count(*)cnt FROM事件分组依据studentID
,`type``可能,但我不知道如何仅使用该信息,因为$rows[$I]
是命名元素和编号元素的混合体。另外,您的大多数变量都缺少$
。您是对的@Barmar。我正在编辑,如果你打印所有数组元素,你会得到重复的数据,因为OP显然使用了PDO::FETCH_tware
Ok,那么你怎么做呢?不需要内部循环。只需打印所需的列<代码>回显$rows[$i]['count(*)']。" " . $行[$i]['type']代码>
SELECT `type`, count(*) as cnt FROM `incidents` WHERE `studentID` = :studentID GROUP BY `type`
foreach($rows as $item){
echo($item["cnt"]);
}
while ($row = $stmtUsr2->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) {
echo $row['cnt'] . " " . $row['type'] . " incident<br>";
}
array(2) {
[0]=> array(2) { ["type"]=> string(9) "Classwork" ["cnt"]=> string(1) "3" }
[1]=> array(2) { ["type"]=> string(8) "Bullying" ["cnt"]=> string(1) "1" }
}
3 classwork incident
1 bullying incident