PDO计算基于WHERE的行值

时间:2019-01-07 00:33:35

标签: php math pdo count sum

在问这个问题之前,我曾多次浏览过PHPDelusions网站,并使用过Google,但我似乎仍然无法使代码正常工作,也找不到能远程反映我的问题的解决方案。

我制作了一个超级简单的PHP7脚本来管理收据。字段很简单。

id (int 12), amount (varchar 8), category (int 2), date (date)

我面临的问题是我试图根据类别 计数金额总金额。因此,假设 Category = 1 (类别= 1)将计算该类别下的所有金额,依此类推。

这是我现有的代码。

function getAmountCount(PDO $pdo, $cat) {

    $data = $pdo->prepare("SELECT COUNT(*) FROM `receipts` WHERE category = :cat_id");
    $data->bindValue(':cat_id', $cat, PDO::PARAM_INT);
    $data->execute();
    $result = $data->fetchColumn();

    echo money_format('%(#10n', $result['amount']).' CAD';

}

#and here is how we call it in the script
echo getAmountCount($pdo, 1);

当前代码返回: 0.00加元

1 个答案:

答案 0 :(得分:0)

您有几个问题。首先,要获取每个类别的总金额,您应该使用SUM,而不是COUNTCOUNT将仅返回与该类别关联的行数的计数。其次,fetchColumn返回单个值,而不是数组。将查询更改为此:

SELECT SUM(amount) AS amount FROM `receipts` WHERE category = :cat_id

echo money_format('%(#10n', $result['amount']).' CAD';

echo money_format('%(#10n', $result).' CAD';