2013-12-21 65 views
0

HTML表格與使用SELECT查詢從數據庫中檢索到的數據填充:MySql如何計算已經用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>'; 
} 

有沒有辦法統計有多少的檢索的記錄有$行[「狀態」] == 1,以及有多少$ row ['status'] == 2而不運行單獨的SELECT COUNT查詢?

+0

如果'user_id'被索引,另一個查詢非常非常便宜,所以不要過多地改變表示層。 – Rudie

回答

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'] ]++; 
} 

但我認爲它實際上可讀性較差。

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語句。