Php 在PDO中获取总和
下面是我的代码,出于某种原因,它没有给我总数。这总是返回0。为什么不起作用 我使用了Php 在PDO中获取总和,php,pdo,sum,Php,Pdo,Sum,下面是我的代码,出于某种原因,它没有给我总数。这总是返回0。为什么不起作用 我使用了if($totprimits=''){来避免数据库中的空白字段 我还尝试删除到期费用,并使用$dueAmont=$result[0],但没有成功 $sql= "SELECT SUM(dueFees) AS due_fees FROM coursePayments WHERE studentId = $student"; $stmt = $c->prepare($sql); $stmt->execut
if($totprimits=''){
来避免数据库中的空白字段
我还尝试删除到期费用,并使用$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_NUM:返回一个数组,该数组由结果集中返回的列编号索引,从列0开始
做
那就是
FETCH_ASSOC:返回结果集中返回的按列名索引的数组
这就是你需要从中找回别名的原因
提示:
您可以删除if子句以检查该值是否为空并将其设置为0
$dueAmont = $result['due_fees'];
if ($dueAmont==""){
$dueAmont = '0';
}
简直可以
$dueAmont = intval($result['due_fees']);
Gah,使用参数绑定!而且,对于单行/单列结果来说,它很好而且简单
$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
谢谢你,汉克。$dueAmont=intval($result['due_fees');
很方便!但是我试着用fetch(PDO::fetch_NUM)
替换fetch(PDO::fetch_ASSOC)
但是结果仍然是0。你知道为什么吗?谢谢Phil。第3行有一个错误。我把它改成了$stmt->->execute($student)
但这并没有反映总数?@JonaNathali你一定在使用旧版本的PHP(5.4之前)。我已经解决了我的问题如果我使用$stmt->execute(array($student))
当版本更新到5.5时会有问题吗?@JonaNathali没有。PHP不会很快删除数组()
构造。一旦你转到PHP
$sql= "SELECT SUM(dueFees) FROM coursePayments WHERE studentId = ?";
$stmt = $c->prepare($sql);
$stmt->execute(array($student));
$dueAmont = (int) $stmt->fetchColumn();
display_errors = On
error_reporting = E_ALL