php sum列在多个表中,并作为一个总数返回
下面我有一个php代码,它汇总了通过多个表的列,并在查询完成后返回3个单独的总数,因为我有3个表。如果我想把这3个总数加起来,我需要用什么方式来修改代码来实现这一点php sum列在多个表中,并作为一个总数返回,php,Php,下面我有一个php代码,它汇总了通过多个表的列,并在查询完成后返回3个单独的总数,因为我有3个表。如果我想把这3个总数加起来,我需要用什么方式来修改代码来实现这一点 foreach($result as $row) { $stmt1 = $DB_CON_C->prepare("SELECT SUM(total_fee) AS total_amount FROM `".$row['files']."`"); $stmt1->execute(); $sum1 = $stmt1
foreach($result as $row) {
$stmt1 = $DB_CON_C->prepare("SELECT SUM(total_fee) AS total_amount FROM `".$row['files']."`");
$stmt1->execute();
$sum1 = $stmt1->fetch(PDO::FETCH_ASSOC);
echo $sum1['total_amount'];
}
试着这样做:
$totalAmount = 0;
foreach($result as $row) {
$stmt1 = $DB_CON_C->prepare("SELECT SUM(total_fee) AS total_amount FROM `".$row['files']."`");
$stmt1->execute();
$sum1 = $stmt1->fetch(PDO::FETCH_ASSOC);
totalAmount += $sum1['total_amount'];
}
echo $totalAmount;
只需在循环的独家新闻之外创建一个变量并将其相加。尝试以下方法:
$totalAmount = 0;
foreach($result as $row) {
$stmt1 = $DB_CON_C->prepare("SELECT SUM(total_fee) AS total_amount FROM `".$row['files']."`");
$stmt1->execute();
$sum1 = $stmt1->fetch(PDO::FETCH_ASSOC);
totalAmount += $sum1['total_amount'];
}
echo $totalAmount;
只需在循环的独家新闻之外创建一个变量,并将其相加。试试这样的方法。在循环外部创建一个变量,然后在每个循环中递增该变量
$grandTotal = 0;
foreach($result as $row) {
$stmt1 = $DB_CON_C->prepare("SELECT SUM(total_fee) AS total_amount FROM `".$row['files']."`");
$stmt1->execute();
$sum1 = $stmt1->fetch(PDO::FETCH_ASSOC);
$grandTotal = $grandTotal + $sum1['total_amount'];
}
echo $grandTotal;
不确定这是否有效,但你明白了。试试这样的方法。在循环外部创建一个变量,然后在每个循环中递增该变量
$grandTotal = 0;
foreach($result as $row) {
$stmt1 = $DB_CON_C->prepare("SELECT SUM(total_fee) AS total_amount FROM `".$row['files']."`");
$stmt1->execute();
$sum1 = $stmt1->fetch(PDO::FETCH_ASSOC);
$grandTotal = $grandTotal + $sum1['total_amount'];
}
echo $grandTotal;
不确定这是否有效,但你明白了。你的代码容易受到攻击。使用prepare语句的优点是,您可以使用bindparams。如果不是在SQL中,您可以在PHP中添加
$sum1
。@FrenchMajesty-您不能使用prepared语句绑定列名(OP正在插入列名)。但是,列名永远不应该使用用户输入来注入。有更安全的方法可以做到这一点,比如有一个可接受的列名“白名单”。你的代码容易受到攻击。使用prepare语句的优点是,您可以使用bindparams。如果不是在SQL中,您可以在PHP中添加$sum1
。@FrenchMajesty-您不能使用prepared语句绑定列名(OP正在插入列名)。但是,列名永远不应该使用用户输入来注入。还有更安全的方法,比如列一个可以接受的“白名单”。谢谢。在totalAmount之前添加缺少的$时,此功能非常有效。谢谢。当添加totalAmount之前缺少的$时,这一点非常有效。