PDO for循环问题

时间:2014-09-28 04:37:47

标签: php mysql pdo

我有一个应根据数量计算价格的功能 该功能应遍历每个订单并根据数量计算每个产品价格,然后返回订单总价 我做错了什么?

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';
}

1 个答案:

答案 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';
}