Php mysql中取值前如何打印合计

Php mysql中取值前如何打印合计,php,mysql,Php,Mysql,我想在while循环之前打印从mysql数据库获取行的总和 我知道我应该先获取行,然后再打印变量。我的问题是,在while循环之前有没有打印变量的方法 我试着这么做 $row=mysqli_fetch_array($projectQuery); 然后打印$row['sum'] 但是这个想法不起作用我的代码不起作用我没有任何结果 $projectQuery=mysqli_query($conn," select project.*,

我想在while循环之前打印从mysql数据库获取行的总和

我知道我应该先获取行,然后再打印变量。我的问题是,在while循环之前有没有打印变量的方法

我试着这么做

$row=mysqli_fetch_array($projectQuery);
然后打印$row['sum']

但是这个想法不起作用我的代码不起作用我没有任何结果

$projectQuery=mysqli_query($conn,"
          select 
          project.*,
          location.db_lid,
          location.db_location as loc,
          concat(tr.db_fname,' ',tr.db_lname) as trans,
          tr.db_uid,
          concat(user.db_fname,' ',user.db_lname) as name,
          user.db_uid,
          client.db_clientid,
          client.db_name as clientname,
          department.db_did,
          department.db_department as dep,
          supplier.db_id,
          supplier.db_CompanyName,
          sum(activities.db_newtotal) as total
          from tbl_project as project
          left join tbl_location as location
          on
          project.db_location=location.db_lid
          left join tbl_user as tr
          on 
          project.db_transferredto=tr.db_uid
          left join tbl_user as user
          on
          project.db_user=user.db_uid
          left join tbl_client as client
          on
          project.db_client=client.db_clientid
          left join tbl_department as department
          on 
          project.db_department=department.db_did
          left join tbl_supplier as supplier
          on
          project.db_transsub=supplier.db_id
          left join tbl_activities as activities
          on
          project.db_projectid=activities.db_projectname
          {$q}
          group by project.db_projectid order by project.db_projectid desc
          ")or die(mysqli_error($conn));
          $count=mysqli_num_rows($projectQuery);

          if($count!=0){
        echo"<h2>You Have $count project </h2>";?>
<div class="table-responsive">
    <table class='ol-md-12 table-bordered table-striped table-condensed cf table-bordered' id="alternatecolor">
        <thead class='cf'>
            <tr>
            <th rowspan='2'>#</th>
            <th rowspan='2'>Date</th>
            <th rowspan='2'>Project</th>
            <th rowspan='2'>Location</th>
            <th rowspan='2'>Cleint</th>
            <th rowspan='2'>Project Manager</th>
            <th rowspan='2'>Staff</th>
            <th rowspan='2'>Subcontractor</th>
            <th rowspan='2'>Company Name</th>
            <th rowspan='2'>Department</th>
            <th colspan='3'>Planing</th>
            <th rowspan='2'>%</th>
            <th rowspan='2'>Civil %</th> 
            <th rowspan='2'>Electrical %</th> 
            <th rowspan='2'>Mechanical %</th> 
            <th rowspan='2'>Total Cost</th> 
            <th rowspan='2'>Note</th> 
            <th rowspan='2'>Checklist</th> 
            <th rowspan='2'>Add</th> 
            <th rowspan='2'>Print</th> 
            <th rowspan='2'>Status</th>
            <th rowspan='2'></th>
            <th rowspan='2'>Edit</th>    
            </tr>
            <tr>
                <th> Start Date</th>
                <th> Due Date</th>
                <th >Duration</th>
            </tr>
        </thead>
        <tbody>
            <?php
              $totalSum=0;
              while($row=mysqli_fetch_array($projectQuery)){
                  $projectid=$row['db_projectid'];
                  $projectName=$row['db_projectname'];
                  $location=$row['loc'];
                  $transferred=$row['trans'];
                  $psd=$row['db_psd'];
                  $pdd=$row['db_pdd'];
                  $duration=$row['db_duration'];
                  $asd=$row['db_past'];
                  $add=$row['db_padd'];
                  $aduration=$row['db_aduration'];
                  $percent=$row['db_percent'];
                  $note=$row['db_pnote'];
                  $staff=$row['name'];
                  $client=$row['clientname'];
                  $cPercent=$row['db_cpercentage'];
                  $ePercent=$row['db_epercentage'];
                  $mPercent=$row['db_mpercentage'];
                  $status=$row['db_status'];
                  $supp=$row['db_CompanyName'];
                  $companyName=$row['db_companyname'];
                  $department=$row['dep'];
                  $clientid=$row['db_clientid'];
                  $date=$row['db_date'];
                  $totaCost=$row['total'];
                  $totalSum+=$row['total'];

            ?>
在代码的这一部分中,我想打印总和

echo"<h2>You Have $count project </h2>";
代码如下所示

您有$count项目总数$totalSum

请尝试下面的代码

$totalSum=0;
$projects = array();
while($row = mysqli_fetch_array($projectQuery)){
  $totalSum+=$row['total'];
  $projects[] = $row;
}

echo"<h2>You Have $totalSum project </h2>";

foreach($projects AS $project) {
  //you can loop through your records here
}
这正是@Chris解释的方法

还有一个建议。在使用变量之前,不需要将每个值赋给变量。相反,您可以直接使用$row['db_projectname']

等值,请尝试下面的代码

$totalSum=0;
$projects = array();
while($row = mysqli_fetch_array($projectQuery)){
  $totalSum+=$row['total'];
  $projects[] = $row;
}

echo"<h2>You Have $totalSum project </h2>";

foreach($projects AS $project) {
  //you can loop through your records here
}
这正是@Chris解释的方法


还有一个建议。在使用变量之前,不需要将每个值赋给变量。相反,您可以直接使用$row['db_projectname']

这样的值。您想要行数的总和还是什么?我不完全清楚您想要做什么,但我认为您将循环和检索数据与打印数据混淆了。您需要先从数据库中检索数据,然后才能使用它,但此时不需要打印它。将数据存储在一个变量中,然后打印出来。在您迭代整个结果对象之前,这将不可用。@开发人员,不,您不需要创建新的查询。正如我在前面的评论中所说,获取数据和打印数据是不同的事情。你可以取一次,然后按你想要的顺序打印100次。但是你的循环除了分配一堆变量之外似乎什么都不做。我猜它是不完整的?有什么理由需要在循环之前输出吗?我猜你是在这个循环中输出的?如果是这样的话,我不会那么做。使用循环构建数据,然后在脚本中稍后进行输出。您想要行数的总和还是什么?我不完全清楚您想要做什么,但我认为您将循环和检索数据与打印数据混淆了。您需要先从数据库中检索数据,然后才能使用它,但此时不需要打印它。将数据存储在一个变量中,然后打印出来。在您迭代整个结果对象之前,这将不可用。@开发人员,不,您不需要创建新的查询。正如我在前面的评论中所说,获取数据和打印数据是不同的事情。你可以取一次,然后按你想要的顺序打印100次。但是你的循环除了分配一堆变量之外似乎什么都不做。我猜它是不完整的?有什么理由需要在循环之前输出吗?我猜你是在这个循环中输出的?如果是这样的话,我不会那么做。使用循环构建数据,然后在脚本中稍后进行输出。