Html表填充了使用SELECT查询从数据库检索的数据:
$query = mysqli_query($con, "SELECT `doc_title`, `date`, `status` FROM `table_name` WHERE `user_id` = 25");
while($row = mysqli_fetch_array($query)) {
echo '<tr>
<td>'. $row['doc_title'] .'</td>
<td>'. $row['date'] .'</td>
<td>'. $row['status'] .'</td>
</tr>';
}
有没有办法计算有多少检索到的记录有$ row ['status'] == 1,有多少有$ row ['status'] == 2没有运行单独的SELECT COUNT查询?
答案 0 :(得分:2)
在内部,你可以计算2个变量:
$status1 = 0;
$status2 = 0;
while($row = mysqli_fetch_array($query)) {
if($row['status'] == 1)
$status1++;
else if($row['status'] == 2)
$status2++;
echo '<tr>
<td>'. $row['doc_title'] .'</td>
<td>'. $row['date'] .'</td>
<td>'. $row['status'] .'</td>
</tr>';
}
此外,您可以以类似的方式使用switch语句。
答案 1 :(得分:1)
如果user_id
被编入索引,则另一个查询非常非常便宜,因此请勿过多地更改您的表示层。
但如果你必须,我会这样做:
$statuses = array();
while ($row = mysqli_fetch_array($query)) {
@$statuses[ $row['status'] ]++;
}
var_dump($statuses[1], $statuses[2]);
@
用于添加到$statuses
的尚未存在的第一个状态。您可能希望使用isset()
代替。有些人非常反对 - @
:
$statuses = array();
while ($row = mysqli_fetch_array($query)) {
isset($statuses[ $row['status'] ]) or $statuses[ $row['status'] ] = 0;
$statuses[ $row['status'] ]++;
}
但我认为它实际上不太可读。