mysql_fetch_assoc以错误的顺序返回结果

时间:2009-12-09 22:08:34

标签: php mysql

我有以下代码:

    $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的调用 - 我可以在页面上看到结果。因此,交换机确实有效。

但是,var_dump语句中的while输出的是表中主键排序的行,而不是按照我的请求输出清晰类型。

如何让mysql_fetch_assoc以我想要的方式输出行?

TIA。

1 个答案:

答案 0 :(得分:6)

您忘记在所有案件结束时使用break ......

因此,您的default查询总是最终执行。