Php CanvasJS图表,包含数据库列的平均值

Php CanvasJS图表,包含数据库列的平均值,php,canvasjs,Php,Canvasjs,这是我的数据库: 我想在柱状图中显示每个列的平均值,如本例所示 所以PD1的平均值为蓝色,PD2的平均值为红色,SVK1的平均值为蓝色,SVK2的平均值为红色,依此类推 我一直在尝试修改此示例代码: 但我不能让它工作。这就是我尝试过的 foreach ($link->query('Select AVG(PD1), AVG(PD2) from table') as $row) { $PD1 = $row['AVG(PD1)']; $PD2 = $row['AVG(PD2)'

这是我的数据库:

我想在柱状图中显示每个列的平均值,如本例所示

所以PD1的平均值为蓝色,PD2的平均值为红色,SVK1的平均值为蓝色,SVK2的平均值为红色,依此类推

我一直在尝试修改此示例代码:

但我不能让它工作。这就是我尝试过的

foreach ($link->query('Select AVG(PD1), AVG(PD2) from table') as $row) {
    $PD1 = $row['AVG(PD1)'];
    $PD2 = $row['AVG(PD2)'];
    array_push($dataPoints,"$PD1","$PD2");
    array_push($dataPoints2, array("y"=> $dataPoints));
};

非常感谢您的帮助

您可以在表达式上指定自定义标签,并将其用作键

foreach($link->query('selectavg(PD1)为a1,AVG(PD2)为a2)作为$row){
$PD1=$row['a1'];
$PD2=$row['a2'];
数组推送($dataPoints,$PD1,“$PD2”);
数组推送($dataPoints2,数组(“y”=>$dataPoints));
};

您可以在表达式上提供自定义标签,并将其用作键

foreach($link->query('selectavg(PD1)为a1,AVG(PD2)为a2)作为$row){
$PD1=$row['a1'];
$PD2=$row['a2'];
数组推送($dataPoints,$PD1,“$PD2”);
数组推送($dataPoints2,数组(“y”=>$dataPoints));
};

您不应访问该查询。您需要获取它,然后迭代获取的结果。@MarkusZeller我恐怕不太清楚“迭代获取的结果”是什么意思。:(
$stmt=$conn->prepare(“从表中选择AVG(PD1)、AVG(PD2));$stmt->execute();$result=$stmt->setFetchMode(PDO::FETCH_ASSOC);
我做了类似的事情,但仍然需要一个foreach循环?我在这里真的迷路了:(我通常使用prepare(),execute())然后获取一个while循环。我不知道我可以直接“查询”它。谢谢!但我注意到了错误。您可以设置自定义“列”名称并在结果中引用它们。请参阅下面的答案。对于这种情况,很抱歉。您不应该获取该查询。您需要获取它,然后对获取的结果进行迭代。@MarkusZeller恐怕我不太清楚你所说的“迭代获取的结果”是什么意思。:(
$stmt=$conn->prepare(“从表中选择平均值(PD1),平均值(PD2”);$stmt->execute();$result=$stmt->setFetchMode(PDO::FETCH_ASSOC);
我做了类似的事情,但仍然需要一个foreach循环?我真的迷路了:(我通常使用prepare(),execute())然后获取一个while循环。我不知道我可以直接“查询”它。谢谢!但我注意到了错误。您可以设置自定义“列”名称并在结果中引用它们。请参阅下面的答案。抱歉,我已经尝试过了。它只显示一个空白页,根本没有图表。当我打印$datapoints时,它会显示出来显示正确的平均值,因此它与CanvasJS的工作方式有关我已经尝试过了。它只显示一个空白页,根本没有图表。当我打印$dataPoints2时,它显示正确的平均值,因此它与CanvasJS的工作方式有关