在PDO中获取SUM


Getting the SUM in PDO

下面是我的代码,由于某种原因它没有给我SUM。这个总是返回0。为什么它不起作用?

我已经使用if ($totSubmits==''){来避免我的数据库中的空白字段。

我也试过删除AS due_fees和使用$dueAmont = $result[0],但没有运气。

$sql= "SELECT SUM(dueFees) AS due_fees FROM coursePayments WHERE studentId = $student"; 
$stmt = $c->prepare($sql);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_NUM);
$dueAmont = $result['due_fees']; 
if ($dueAmont==""){
    $dueAmont = '0';
}
echo $student." due amount ".$dueAmont;
fetch(PDO::FETCH_NUM)

不会返回一个关联数组。这是一个数字索引数组,因此你找不到你的字段。

PDO::FETCH_NUM:返回结果集中以列号为索引的数组,从第0列开始

fetch(PDO::FETCH_ASSOC)

也就是

PDO::FETCH_ASSOC:返回一个按列名索引的数组

这就是你需要获取别名的地方。

提示:

您可以删除if子句来检查值是否为空,并将其设置为0。

$dueAmont = $result['due_fees']; 
if ($dueAmont==""){
    $dueAmont = '0';
}

可以是

$dueAmont = intval($result['due_fees']); 

哎呀,使用参数绑定!此外,fetchColumn()对于单行/单列结果来说是很好的和容易的

$sql= "SELECT SUM(dueFees) FROM coursePayments WHERE studentId = ?"; 
$stmt = $c->prepare($sql);
$stmt->execute(array($student));
$dueAmont = (int) $stmt->fetchColumn();

附录

在开发时,始终运行带有完整错误披露的PHP环境。这样你就不会错过像上面代码中那样容易犯的错误。In php.ini

display_errors = On
error_reporting = E_ALL