我有一个应根据数量计算价格的功能 该功能应遍历每个订单并根据数量计算每个产品价格,然后返回订单总价 我做错了什么?
public function getSumaComanda($cos) {
$suma = $this->_db->query(sprintf("SELECT (@pretredus:=`pretredus`) AS `pretredus`,(CASE @pretredus WHEN 0 THEN `prettotal` ELSE `pretredus` END) AS `prettotal` , cantitate FROM comenzi WHERE cos = '%d'", $cos));
$suma->execute();
$data_array = $suma->fetchAll(PDO::FETCH_ASSOC);
$count = $this->_db->query(sprintf("SELECT COUNT(*) FROM cosuri WHERE id='%d'", $cos));
$num = $count->fetchColumn();
for ($x = 0; $x < $num; $x++) {
$price = $data_array['cantitate'][$x] * $data_array['prettotal'][$x];
$pret = $pret + $price;
$pret = number_format($pret, 2, ".", "");
}
$rez = $pret;
return $rez . ' Lei';
}
答案 0 :(得分:1)
您应该学习如何基本调试变量。使用var_dump($data_array);
,您可以看到,那里有什么。
您必须先使用数字索引:
$price = $data_array[$x]['cantitate'] * $data_array[$x]['prettotal'];
然而,你的第二个查询是无用的。您不必计算结果,而是可以使用while循环:
public function getSumaComanda($cos) {
$suma = $this->_db->query(sprintf("SELECT (@pretredus:=`pretredus`) AS `pretredus`,(CASE @pretredus WHEN 0 THEN `prettotal` ELSE `pretredus` END) AS `prettotal` , cantitate FROM comenzi WHERE cos = '%d'", $cos));
$suma->execute();
while ($data_array = $suma->fetch(PDO::FETCH_ASSOC)) {
$pret += $data_array['cantitate'] * $data_array['prettotal'];
}
return number_format($pret, 2, ".", "") . ' Lei';
}