2012-01-23 49 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; 
}