2013-04-18 14 views
0

经过数小时的尝试和搜索网络,我放弃了,并寻求你的帮助。如何用PHP检索统计SQL结果?我创建了一个包含五个条目的测试表,主要是数字值。使用phpMyAdmin,我可以进行多项统计计算,但使用PHP我甚至无法获得一笔数额。如何用PHP检索统计SQL结果?

在SQL语言,它是非常简单的:

SELECT SUM(`Arbeidspercentage`) FROM `enq_vs`; 

我把在一起的PHP文件使用其他功能,如:

<?php 
    require "connect.php"; 
    $kwearie_1 = mysqli_query($con,"SELECT * FROM `enq_vs`"); 
    $x = "Arbeidspercentage"; 
    $y = "Verzoeken_alg_toegek"; 
    while($row = mysqli_fetch_array($kwearie_1)) 
    { 
    echo $row[$x] . " " . $row[$y] . '<br>'; 
    }; 

    $kwearie_2 = mysqli_query($con,"SELECT SUM(`Arbeidspercentage`) FROM `enq_vs`"); 
    $kwearie_2_readable = mysqli_fetch_all($kwearie_2); 
    echo $kwearie_2_readable; 
    mysqli_close($con); 
?> 

但是,所有我得到的结果第一个kwearie。第二个不提供任何内容,“数组”或重要的错误报告不能转换为字符串。我已经尝试了所有的子函数,从'fetch_all'到'fetch_row'。

这是如何完成的?一个好的教程也可以做。

+0

对于转储,使用'var_dump()'而不是'echo'。在select中为生成的列添加别名总是一个好习惯。 F.ex:'... SUM(Arbeidspercentage)as sum_value ...' – pozs

回答

1

我想别名会非常适合在这里:

SELECT SUM(`Arbeidspercentage)` as 'sum_arbeid' ... 
... 
echo $row['sum_arbeid']; 
+0

最简单的方法也产生了最好的结果。谢谢! :-) –

0

当你执行mysql_fetch_all时,你会得到一个数组。你不能简单地回显数组的结果。改用foreach循环。

$kwearie_2_readable = mysqli_fetch_all($kwearie_2); 
foreach ($kwearie_2_readable as $row) { 
    // $row is an array as well. 
    var_dump($row); 
} 

在你知道你的结果只会有一排所以你也可以做到这一点的情况下:

var_dump($kwearie_2_readable[0]); 

最终要呼应你感兴趣的特定元素:

echo $kwearie_2_readable[0][0]; 
+0

虽然你的方法产生的结果确实包含了总和,但它的形式不能用于其他函数:array(1){[0] => string(3)“322”}'。不过,谢谢你的加入。这是一个非常棒的论坛,当谈到及时的回复! :-) –

+0

没问题。是的,这是一个伟大的论坛。根据你的反馈,你可能已经完成了echo $ kwearie_2_readable [0] [0];尽管如此,我还是建议你阅读一下php数组,以及它们是如何工作的。即使在同一个数组中,它们也支持数字索引和关联索引(字符串键)。根据您使用的特定fetch_ *方法,mysql抓取例程允许您在抓取一行时返回一个或另一个或两者。 SQL别名始终是保证计算列上的列名的好方法,但这不是PHP特有的技术,尽管有帮助。 – gview

0

尝试添加MYSQLI_ASSOC作为mysqli_fetch_array调用的第二个参数。它将强制函数返回assoc数组而不是整数索引。 mysqli_fetch_all调用也一样。这些调用将始终返回一个数组,所以echo将始终打印Array。尝试var_dump而不是echo。

var_dump($kwearie_2_readable);