2013-03-18 48 views
0

下面的代碼循環遍歷MySql數據庫中的表格,並顯示匹配的表格單元格中的所有汽車記錄。我知道我可以在MySql查詢中使用ORDER BY命令來按特定的列排序,但是如何將特定的記錄放在頂部,然後列出所有剩餘的匹配?循環遍歷MySql表格並以PHP格式以特定順序輸出

例如,我有一個簡單的表單,在此之前用戶用$ _POST方法選擇他們最喜歡的汽車($_POST['user_car'])和所需的規格($_POST['user_spec'])。因此,我的查詢顯示所有匹配選定規格的記錄,但我希望所選車輛位於列表的最頂端,剩下的要遵循。

 $query_params = array( 
      ':spec' => $_POST['user_spec'] 
     ); 

     $query = " 
      SELECT 
       * 
      FROM 
       table 
      WHERE 
       spec=:spec 
     "; 

     try { 
      $stmt = DB::get()->prepare($query); 
      $stmt->execute($query_params); 
      $rows = $stmt->fetchAll(); 
     } 
     catch(PDOException $ex) {} 

     foreach($rows as $row): 

      $cell .= '<td> 
          <input type="checkbox" '.$check.' name="spec[]" value="'.$row['id'].'"/><span> '.$row['spec'].' 
         </td>'; 
     endforeach; 
+1

將所選值添加到ORDER BY,即SELECT .. ORDER BY car ='ford'DESC,car_name。此測試將產生1爲匹配和0爲不匹配 – Waygood 2013-03-18 14:20:18

回答

4

ORDER BY不會限制你只是列(S),你也可以把評估語句放在那裏。

 SELECT 
      * 
     FROM 
      table 
     WHERE 
      spec=:spec 
     ORDER BY car_name=:user_car DESC, car_name ASC 

如果用戶喜歡的車是「小」,然後用car_name記錄「迷你」將評估爲1,其餘爲0,所以它會首先出現。 其餘的車輛將按照他們的名字進行訂購。

+1

謝謝@Waygood - 事實證明這是非常簡單的:) – 2013-03-18 14:38:14