Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从使用union的sql语句中添加总计_Php_Mysql_Sql_Count_Union - Fatal编程技术网

Php 从使用union的sql语句中添加总计

Php 从使用union的sql语句中添加总计,php,mysql,sql,count,union,Php,Mysql,Sql,Count,Union,我有一个查询,它使用union显示每个请求类别的总数。我试图找到一种方法来添加所有6个类别的总数,并在用户页面上显示它们。我正在使用ajax来重新加载总数,因为他们进来或完成。我得到的回应显示了每个类别的连续性,而不是总数 $sql = "SELECT 'SKU Requests: ' AS skus, COUNT(*), '/admin/sku2', '/skuRequest/myRequests.php' AS sLink FROM sku_request WHERE comple

我有一个查询,它使用union显示每个请求类别的总数。我试图找到一种方法来添加所有6个类别的总数,并在用户页面上显示它们。我正在使用ajax来重新加载总数,因为他们进来或完成。我得到的回应显示了每个类别的连续性,而不是总数

$sql = "SELECT 'SKU Requests: ' AS skus, COUNT(*), '/admin/sku2', '/skuRequest/myRequests.php' AS sLink FROM sku_request WHERE completed = 0
        UNION
        SELECT 'Sku Update:' AS updates, COUNT(*), '/admin/sku/skuUpdate.php', '#' AS sLink FROM sku_update WHERE completed = 0
        UNION
        SELECT 'RMA Requests: ' AS rma, COUNT(*),'/admin/rma', '/rma/yourRequests.php' AS sLink FROM rma_submissions WHERE rma_number = 'Pending'
        UNION
        SELECT 'Termination Requests: ' AS idT, COUNT(*),'/admin/idTerminations','/idTermination/yourIdTermRequests.php' AS sLink FROM idTermination WHERE completed = 0
        UNION
        SELECT 'ID Requests: ' AS ids, COUNT(*), '/admin/idRequest2', '/idRequest/yourIdRequests.php' AS sLink FROM id_request WHERE ssoid IS NULL
        UNION
        SELECT 'TDA: ' AS tda, COUNT(*), '/admin/tda', '/tda' AS sLink FROM tda_request WHERE completed = 0


";


  $stmt = $conn->prepare($sql);

  $stmt->bindColumn(1,$ID);
  $stmt->bindColumn(2,$count);
  $stmt->bindColumn(3,$link);
  $stmt->bindColumn(4,$link2);
  $stmt->execute();
  $numRows = $stmt->rowCount();

  if (isset($numRows)) {

}

while ($stmt->fetch()) {

  $reqTotals+= $count;
  echo $reqTotals;

}
当为空时,回显的结果为000000。如果一个请求进入,比如说ID终止,它会显示000110,而它应该只显示1。TDA请求显示000001

我怎样才能把这些加起来?我试过使用+=但似乎不起作用。奇怪的是,如果我把结果放在一个会话中,它工作得很好

这可以工作并显示正确的数字。但我不喜欢在会议中使用这个

while ($stmt->fetch()) {

  if($count > 0){
    $class = "badge badge-pill badge-danger";
  }else{$class = "badge badge-pill badge-success";}

if($_SESSION['role'] == 'Admin'){
  echo '<div class="btn-group floatRight" role="group" style="font-size: 14px;"><a href="'.$link.'" class="nav-link" style="margin-left: -20px;"> '.$ID.' <span class="'.$class.'" style="margin-left: 4px; margin-right: -6px;"> ' . $count . '</span></a></div>';
  if ($count == 0) {
    $_SESSION['re_totals']+= 0;
  }
  $_SESSION['re_totals']+= $count;
}else{
  echo '<div class="btn-group floatRight" role="group"><a href="'.$link2.'" class="nav-link" style="margin-left: -20px;"> '.$ID.' <span class="'.$class.'" style="margin-left: 4px;"> ' . $count . '</span></a></div>';
  if ($count == 0) {
    $_SESSION['re_totals']+= 0;
  }
  $_SESSION['re_totals']+= $count;
}


}
我得到的回应显示了每个类别的连续性,而不是总数

$sql = "SELECT 'SKU Requests: ' AS skus, COUNT(*), '/admin/sku2', '/skuRequest/myRequests.php' AS sLink FROM sku_request WHERE completed = 0
        UNION
        SELECT 'Sku Update:' AS updates, COUNT(*), '/admin/sku/skuUpdate.php', '#' AS sLink FROM sku_update WHERE completed = 0
        UNION
        SELECT 'RMA Requests: ' AS rma, COUNT(*),'/admin/rma', '/rma/yourRequests.php' AS sLink FROM rma_submissions WHERE rma_number = 'Pending'
        UNION
        SELECT 'Termination Requests: ' AS idT, COUNT(*),'/admin/idTerminations','/idTermination/yourIdTermRequests.php' AS sLink FROM idTermination WHERE completed = 0
        UNION
        SELECT 'ID Requests: ' AS ids, COUNT(*), '/admin/idRequest2', '/idRequest/yourIdRequests.php' AS sLink FROM id_request WHERE ssoid IS NULL
        UNION
        SELECT 'TDA: ' AS tda, COUNT(*), '/admin/tda', '/tda' AS sLink FROM tda_request WHERE completed = 0


";


  $stmt = $conn->prepare($sql);

  $stmt->bindColumn(1,$ID);
  $stmt->bindColumn(2,$count);
  $stmt->bindColumn(3,$link);
  $stmt->bindColumn(4,$link2);
  $stmt->execute();
  $numRows = $stmt->rowCount();

  if (isset($numRows)) {

}

while ($stmt->fetch()) {

  $reqTotals+= $count;
  echo $reqTotals;

}
为什么不直接在数据库中进行计算呢

选择 从sku_请求中选择COUNT*作为cnt,其中completed=0 +从sku\U更新中选择计数*,其中已完成=0 +从rma\U提交中选择COUNT*,其中rma\U编号=‘待定’ +从idTermination中选择COUNT*,其中completed=0 +从ssoid为NULL的id_请求中选择COUNT* +从tda_请求中选择计数*,其中已完成=0 作为res
echo$reqTotals应该在循环之外,这就是为什么您有60。var_dump$count返回什么?@user3783243是的,我想到了,但返回0。我将where从0=>1更改为显示结果我以前从未使用过bindColumn。如果您将其注释出来并使用while$row=$stmt->fetch{print\r$row;您有什么?行计数也可能不会做您想要的事情,但如果设置为$numRows{不做任何事情,则无所谓。