php sum列在多个表中,并作为一个总数返回

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

下面我有一个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->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之前缺少的$时,这一点非常有效。