2012-01-23 83 views
2

我卡住了,我的目標是讓產品ID,隱藏在$ _SESSION [「購物車」]內 ,然後使用這些ID在SQL查詢來計算總和如何遍歷這個數組並獲得總和?

這裏是我的代碼

public function getProductID(){ 
    $keys = array_keys($_SESSION['cart']); 
    return $keys; 
} 


public function getShippingFee(){ 
    $ids = $this->getProductID(); 
    foreach($ids as $id){ 
    $query = mysql_query("SELECT * FROM deliverycharges WHERE ProductID = $id"); 
    $row = mysql_fetch_assoct($query); 
    $sum = $row['Cost'] + $row['Tax']; 
    return $sum; 
    } 
} 

我粘貼的第二個功能是錯誤的,我做了幾個類型的循環的,然而,我不能讓我上真正sum..shame

+0

你得到了什麼樣的錯誤? –

+0

在您創建總和之前,您需要知道創建總和的內容。你的問題完全不清楚。一般來說,你可以使用'+'來創建一個總和,所以你的代碼看起來不錯。 – hakre

+0

不建議在循環內執行查詢。你最好建立一個查詢來檢索所有的結果,然後用循環來解析它們。除此之外,在將它傳遞給MySQL之前,最好將'$ id' var轉義出來,這是可以肯定的。 – entropid

回答

6

後返回,退出函數時,所以你需要首先總結一切,然後在所有事情總結後返回:

public function getShippingFee(){ 
    $ids = $this->getProductID(); 
    foreach($ids as $id){ 
     $query = mysql_query("SELECT * FROM deliverycharges WHERE ProductID = $id"); 
     $row = mysql_fetch_assoc($query); 
     $sum += $row['Cost'] + $row['Tax']; 
    } 
    return $sum; 
} 
0

您正在覆蓋每個循環的總和值。使用+ =

public function getShippingFee() { 
    $ids = $this->getProductID(); 
    $sum = 0; 
    foreach($ids as $id) { 
     $query = mysql_query("SELECT * FROM deliverycharges WHERE ProductID = $id"); 
     $row = mysql_fetch_assoct($query); 
     $sum += $row['Cost'] + $row['Tax']; 
    } 
    return $sum; 
}