如何获得特定行的总和

时间:2019-04-10 09:35:59

标签: php mysql

我正在开发血库管理系统。现在,我想显示每个用户献血多少次,我的意思是我想获取每个用户行的总数。例如,如果一个捐献者(护照/身份证为AF3444547)在数据库中有3行,那么我需要显示数据库中的总行。如果下次我再次放入AF3444547的记录,那么我需要得到总和4。图像显示在我的数据库下方。提前致谢 blood donation record

这是我的代码

 <?php
                    $passport_IC='passport_IC';
                      $q="SELECT passport_IC, count(*) FROM donate GROUP BY passport_IC";
                      $query=$db->prepare($q);

                      $query->execute(array($passport_IC));
                      $people = $query->fetchAll(PDO::FETCH_OBJ);


                    ?>
     <table class="table table-bordered">
      <tr>
        <th><center> passport </center></th>
        <th><center> quantity</center></th>




      </tr>
      <?php foreach($people as $donors): ?>
        <tr>
           <td><center><b><font color="white"><?= $donors->passport_IC; ?></font></b></center></td>




        </tr>
      <?php endforeach; ?>

3 个答案:

答案 0 :(得分:1)

不是sum()所需要的...

count(*)是答案。

  

COUNT(*)函数返回满足以下条件的行数:   SELECT语句的WHERE子句。

https://www.ibm.com/support/knowledgecenter/en/SSGU8G_12.1.0/com.ibm.sqls.doc/ids_sqs_1580.htm

 $q=$db->query("SELECT COUNT(*) from donate WHERE passport_ic=:passport_ic" );

答案 1 :(得分:0)

请使用:

SELECT COUNT(*) as total from donate WHERE passport_ic=:passport_ic

答案 2 :(得分:0)

我认为您需要使用rowCount而不是rowcount

$row=$q->rowcount();应该是$del->rowCount()

您还可以通过使用MYSQL查询来实现这一点,在此处使用count(*)来获取总行数:

$q=$db->query("SELECT COUNT(*) as total from donate WHERE passport_ic=:passport_ic" );

第三,您也可以使用PHP count()方法,该方法会将您的数组计数返回为echo count($q);


编辑:

更新问题后,该数组$people中包含所有行,因此可以简单地使用echo count($people);,这将返回总计的行数。