2012-04-16 71 views
0

我将我的SQL查询中的元素添加到关联数组中,并按如下所示打印它们;获取php数组的总和

foreach ($db->query($sql) as $row) 
      { 
?>  
       <p> 
       <?php 
       //Print details of each row 
       echo "Sale Date: " . $row['saleDate'] . "<br />" . 
         "Sale Price: " . $row['salePrice'] . "<br />" . 
         "Buyers Email: " . $row['userEmail'] . "<br />"; 
       ?> 
       </p> 

我希望能够得到与我的SQL查询匹配的元素的salePrice的总和。 我知道我可以使用SQL sum命令获取我在sql中的整个salePrice列的总和,但我只想看到与我的查询匹配的元素总和。有没有简单的方法来做到这一点?

谢谢。

+2

您可以在SQL查询中只添加codition,只得到查询总和(yourfield)的元素。 – heyanshukla 2012-04-16 10:20:09

+0

你需要处理这些钱吗?如果是这样,请注意浮点精度,这将使这个任务非常严重,如果你需要的总和是正确的。 – hakre 2012-04-16 10:27:25

+0

感谢您的快速回复。 – 2012-04-16 10:31:27

回答

0

最简单的通过要做到这一点的方法是使用SQL命令。

SELECT SUM(salePrice) as sum

然后调用总和会给你salePrice的总和匹配您的关联数组

+0

哈哈他已经说过,他可以使用sql命令。他想要的是一种替代方法,以便他不必再次运行查询:D – 2012-04-17 05:16:18

1
$sum = 0; 
foreach ($db->query($sql) as $row) 
      { 
?>  
       <p> 
       <?php 
       $sum += floatval($row['salePrice']); 
       //Print details of each row 
       echo "Sale Date: " . $row['saleDate'] . "<br />" . 
         "Sale Price: " . $row['salePrice'] . "<br />" . 
         "Buyers Email: " . $row['userEmail'] . "<br />"; 
       ?> 
       </p> 

用于计算

1
$summary = 0; 
foreach ($db->query($sql) as $row) { 
?>  
<p> 
<?php 
//Print details of each row 
echo "Sale Date: " . $row['saleDate'] . "<br />" . 
         "Sale Price: " . $row['salePrice'] . "<br />" . 
         "Buyers Email: " . $row['userEmail'] . "<br />"; 
$summary += $row['salePrice']; 
?> 
</p> 
<? 
} 
echo 'Summary: '.$summary; 
?> 
1

这个$总和变量您可以添加只有SQL查询codition,只得到查询总和(yourfield)。 否则如果要列出所有$行和总结选中,那么

$sum = 0; 
foreach ($db->query($sql) as $row) 
     { 
?>  
      <p> 
      <?php 
      if()// your condition here 
      { 
       $sum += floatval($row['salePrice']); 
      } 
      //Print details of each row 
      echo "Sale Date: " . $row['saleDate'] . "<br />" . 
        "Sale Price: " . $row['salePrice'] . "<br />" . 
        "Buyers Email: " . $row['userEmail'] . "<br />"; 
      ?> 
      </p> 
1

的价格,你也可以做到这一点只需在MySQL(它甚至可能更快)。

假设数据结构是这样的:

CREATE TABLE tbl_sales (
    buyers_email VARCHAR(50), /* probably should make this foreign key of tbl_buyer */ 
    sale_price DECIMAL(7,2), 
    sale_date TIMESTAMP 
); 

像这样的$ sql查询将做到:

SELECT SUM(sale_price) AS total_sale FROM tbl_sales; 

然后在PHP中:

$query = $dbh -> exec ($sql); 
$query -> setFetchMode(PDO::FETCH_ASSOC); 
$results = $query -> fetchAll(); 

$total = $results[0]["total_sale"]; 
1

我认为你应该使用正确的工作的正确工具..因为你打电话MySQL它已经有一个SUM函数重刑

SELECT SUM(salePrice) as total 

这将完成这项工作要快得多