在PDO中获取SUM

时间:2014-07-22 05:43:28

标签: php pdo sum

以下是我的代码,由于某些原因,它没有给我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;

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

Gah,使用参数绑定!此外,对于单行/单列结果,fetchColumn()非常简单

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

附录

开发时,始终运行PHP环境并完全错误披露。然后你就不会错过上面代码中容易出错的错误。在php.ini

display_errors = On
error_reporting = E_ALL