2012-04-16 63 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 

這將完成這項工作要快得多