douzhuangxuan3268 2019-01-07 00:33
浏览 105
已采纳

PDO根据WHERE计算行值

I looked over PHPDelusions website few times before asking this, as well as used Google but I still can't seem to get the code to work, or find a solution that remotely mirrors my question in general.

I made a super simple PHP7 script for managing Receipts. The fields are simple.

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

The problem I'm facing is I'm trying to Count the Total Amount of money based on Categories. So let's say Category = 1 would count all Amounts with that respective category and so on.

Here is my existing code.

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);

The current code returns: $ 0.00 CAD

  • 写回答

1条回答 默认 最新

  • dsa88885555 2019-01-07 00:37
    关注

    You have a couple of issues. Firstly, to get the total amount of money for each category, you should be using SUM, not COUNT. COUNT will simply return a count of the number of rows associated with that category. Secondly, fetchColumn returns a single value, not an array. Change your query to this:

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

    and

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

    to

    echo money_format('%(#10n', $result).' CAD';
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 表达式必须是可修改的左值
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题