2009-12-09 26 views
0

我有以下代碼:mysql_fetch_assoc返回結果在錯誤的順序

$sortorder = $_GET['sort']; 
switch($sortorder) 
{ 
case "modulea": 
    $result2 = db_query("SELECT * FROM {vanqueue_registrations} WHERE isactive=1 ORDER BY `cleanmodule` ASC"); 
case "moduled": 
    $result2 = db_query("SELECT * FROM {vanqueue_registrations} WHERE isactive=1 ORDER BY `cleanmodule` DESC"); 
case "typea": 
    $result2 = db_query("SELECT * FROM {vanqueue_registrations} WHERE isactive=1 ORDER BY `cleantype` ASC"); 
    var_dump($result2); 
case "typed": 
    $result2 = db_query("SELECT * FROM {vanqueue_registrations} WHERE isactive=1 ORDER BY `cleantype` DESC"); 
default: 
    $result2 = db_query("SELECT * FROM {vanqueue_registrations} WHERE isactive=1"); 
} 
while($result = mysql_fetch_assoc($result2)) 
{ 
var_dump($result); 
$value .= "<tr><td><center>" . $result['cleanmodule'] . "</center></td><td><center>" . $result['cleantype'] . "</center></td><td><center>" . $directions[$result['direction']] . "</center></td></tr>"; 
} 

正如你所看到的,它需要一個GET變量,並根據其價值,執行某個查詢。 (不用擔心,這只是測試代碼,我會明顯在稍後驗證輸入。)

我的問題:正確的查詢正在執行,但mysql_fetch_assoc似乎是以某種方式重新排序行,不想要。

我正在測試案例typea,當我執行頁面時,執行var_dump的調用 - 我可以在頁面上看到結果。所以交換機肯定工作。

但是,while語句中的var_dump正在輸出由表中的主鍵排序的行,而不是按照我的請求cleantype輸出。

我該如何讓mysql_fetch_assoc以我想要的方式輸出行?

TIA。

+0

請格式化您的代碼 – 2009-12-09 22:10:16

+1

完成,對不起 - 第一次看起來不錯 – benjy 2009-12-09 22:10:55

回答

6

你忘了使用break在所有的情況下,最終...

因此,您default查詢始終得到了最後執行。

+0

哎呦。謝謝。那很簡單。 – benjy 2009-12-09 22:12:07

+0

switch {case'1':break; } – 2009-12-09 22:12:37

+0

@cballou:嗯?你什麼意思? – Franz 2009-12-09 22:14:49