我有一个函数可以根据数量计算价格。
该函数应该循环遍历每个订单并根据数量计算每个产品的价格,然后返回订单总价。
我做错了什么?
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';
}
最佳答案
您应该学习如何从根本上调试变量。通过使用 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';
}
关于php - PDO for 循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26081662/