好的,我的查询是这样的:
select distinct `rate_id`, `p_id`, p_rate from shipping_rates inner join products_to_categories ptc inner join customers_basket cb on ptc.products_id = cb.products_id where cb.customers_id='1' and p_status = '1' and p_free = '0' group by p_id
返回
rate_id p_id p_rate
1 1 10.00
2 22 11.00
这是我想要的,但是当我用
添加到数组时 $p_rate[] = $sInfo->p_rate;
$rate = array_sum($p_rate);
这样会返回10.00而不是21.00
顺便说一句,这是我的objectInfo类的代码
function objectInfo($object_array) {
reset($object_array);
while (list($key, $value) = each($object_array)) {
$this->$key = tep_db_prepare_input($value);
}
}
}
}
,下面的代码是
$sRate = tep_db_fetch_array($status_query);
if ($sRate !=''){//error checking for empty query
$sInfo = new objectInfo($sRate);
}
trp_db_fetch_array()只是一个调用mysql_fetch_array的函数
答案 0 :(得分:0)
你在获取循环中的array_sum()吗? e.g。
while($sInfo = fetch_from_db($result)) {
$p_rate[] = $sInfo->p_rate;
$rate = array_sum($p_rate);
}
?如果是这样,那么你必须将总和移动到OUTSIDE循环,所以它只在你从数据库中检索所有数据后总结:
while($sInfo = fetch_from_db($result)) {
$p_rate[] = $sInfo->p_rate;
}
$rate = array_sum($p_rate);
答案 1 :(得分:0)
$ sInfo只包含一行。您需要先获取整个结果集。
您似乎使用框架而不是本机php函数。出于这个原因,我无法提供用于执行此操作的代码。
获得结果集后,使用:
foreach($sInfoTable as $sInfo){
$p_rate[] = $sInfo->p_rate;
}
$rate = array_sum($p_rate);
答案 2 :(得分:0)
好的,所以我通过狩猎找到答案,啄这里是查询
$status_query = tep_db_query("select `rate_id`, `p_id`, `p_rate`, cb.customers_id from " . TABLE_SHIPPING_RATES ." inner join ". TABLE_PRODUCTS_TO_CATEGORIES . " ptc inner join ". TABLE_CUSTOMERS_BASKET . " cb on cb.products_id = p_id where cb.customers_id='" . $customer_id ."' and p_status = '1' and p_free = '0' group by cb.customers_id,p_id");
这是我得到所有行的地方:
while($row = mysql_fetch_assoc($status_query)){
$p_rate[] = $row["p_rate"];
}
这里是我总结行的地方:
$rate = array_sum($p_rate);
所以现在这不需要计算行等等,而且更清洁