数据库中的数字拒绝添加/相乘

时间:2010-01-19 19:28:52

标签: php mysql math types

我从MySQL数据库中提取了一组数字,我正在尝试对它们进行一些简单的数学运算来计算发票中的总价格,但PHP不合作。我认为这可能是类型强制问题,所以我尝试添加一些intvalfloatval来电,但总数仍然是0。

以下是相关代码。

$totalSum = 0;
$parts = $db->select("*", "WHERE record_id=$id", "recordparts");

    foreach($parts as &$part) {
        $part['priceTotal'] = (floatval($part['price']) * intval($price['quantity'])) + (floatval($part['laborTime']) * floatval($price['laborRate']));
        $totalSum += $part['priceTotal'];
    }

    $record['parts'] = $parts;
    $record['partsSum'] = $totalSum;

以下是上述操作的结果

parts => Array (1)
  0 => Array (8)
    id => "18"
    partNumber => "92-000001"
    record_id => "17"
    price => "11.5"
    laborTime => "2"
    laborRate => "65"
    quantity => "1"
    priceTotal => 0
partsSum => 0

2 个答案:

答案 0 :(得分:1)

哇,看了之后,这只是一个错字(好吧,两个)。无论出于何种原因,我随机从使用$parts切换到使用$price作为数组。解决了我的问题。

foreach($parts as &$part) {
        $price = floatval($part['price']);
        $quantity = intval($part['quantity']);
        $laborTime = floatval($part['laborTime']);
        $laborRate = floatval($part['laborRate']);

        $part['priceTotal'] = ($price * $quantity) + ($laborTime * $laborRate);
        $totalSum += $part['priceTotal'];
}

答案 1 :(得分:1)

出于好奇,你为什么不让MySQL做乘法呢?我猜这无论如何都会更快。

$totalSum = 0;
$parts = $db->select("*, price * quantity AS priceTotal", "WHERE record_id = $id", "recordparts");

foreach($parts as &$part) {
    $totalSum += $part['priceTotal'];
}

$record['parts'] = $parts;
$record['partsSum'] = $totalSum;