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