php - mysql_fetch_assoc 以错误的顺序返回结果

标签 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 的调用 - 我可以在页面上看到结果。所以开关肯定能正常工作。

但是,while 语句中的 var_dump 正在输出表中按主键排序的行,而不是根据我的要求,cleantype。

如何使 mysql_fetch_assoc 按照我希望的顺序输出行?

TIA。

最佳答案

您忘记在所有案例的末尾使用 break...

因此,您的默认 查询总是最后执行。

关于php - mysql_fetch_assoc 以错误的顺序返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1877266/

相关文章:

php - 使用下拉菜单和文本输入在 mysql 数据库上执行 AJAX 搜索

MySQL插入数据避免歧义

Mysql查询三张表

php - PHP提交为空白,无 echo

mysql - 为什么这些 mysql 查询在本地和在舞台上运行不同?

mysql - MySQL docker容器的性能问题

php - 从 mysqli_multi_query 获取最后结果

php - 如何使用 cakephp 3.0 在 redis 中保存 session ?

php - 创建我们自己的 session 处理程序

php - 正则表达式挑战 : Capture all the numbers in a specific row