You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PDO SUM查询正常,添加WHERE参数后返回0的问题

问题解决:PDO统计指定ID的debit总和返回0的问题

核心问题:字段名错误

你的SQL语句中使用了rfid=:id作为查询条件,但数据库表的列名是id而非rfid,导致WHERE条件无法匹配任何记录,SUM(debit)返回NULL,经过floatval()转换后得到0。

修正后的代码:

$stmt = $DB_con->prepare("SELECT SUM(debit) AS balance FROM pay WHERE id=:id");
$stmt->execute([":id" => $_GET['id']]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);

// 处理无匹配记录的情况,避免NULL转成0的歧义
$balance = isset($result['balance']) && $result['balance'] !== null ? floatval($result['balance']) : 0.0;
var_dump($balance);

其他可能的排查方向

如果修正字段名后仍有问题,可以检查以下几点:

  • 参数值格式问题:确保$_GET['id']的实际值和数据库中id字段的格式一致,比如是否带额外空格、字符,可通过trim($_GET['id'])过滤后再传入。
  • 字段类型不匹配:如果数据库中id是字符串类型(如CHAR/VARCHAR),可以明确指定参数绑定类型:
    $id = trim($_GET['id']);
    $stmt = $DB_con->prepare("SELECT SUM(debit) AS balance FROM pay WHERE id=:id");
    $stmt->bindParam(':id', $id, PDO::PARAM_STR);
    $stmt->execute();
    
  • 开启PDO错误提示:排查是否有SQL语法或执行错误,在PDO初始化时开启错误模式:
    $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    

内容的提问来源于stack exchange,提问作者Chester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:52:43