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