我有以下代码:
$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/