0

长话短说,我的按字段排序似乎不适用于我的 MySQL 调用。我在存储中真的找不到模式...

$theorder 正确设置为

, 'People-Wedding Photo', 'People-Kids', 'People-Male/Female', 'Architecture-Exterior', 'Architecture-Interior', 'Animal-Birds', 'Backgrounds'

这是我的代码。如您所见,我正在循环,进行格式转换....但我仍然收到错误的订单...随机订单...。

有什么我想念的吗?

$under_link_query = mysql_query("SELECT DISTINCT(type), type FROM ".$prefix."ProFolio_work WHERE type != 'Backgrounds' ORDER BY FIELD(type" . $theorder .")");


    while($u_row = mysql_fetch_assoc($under_link_query)){
        $type = html_entity_decode($u_row['type']);

        $typeForm = preg_replace('/[^a-z0-9]/i', '_', $type);
        ?>
           <a href="#" id="link_<? echo str_replace(' ', '_', $typeForm); ?>">
    <? echo ucfirst($type); ?></a>
            <?
4

1 回答 1

3

@Malovich 是答案,基本上你应该使用:

ORDER BY $theorder

但请记住,默认顺序是升序,并且顺序发生。我注意到您的变量$theorder设置为以逗号开头的字符串,这几乎是您的问题。

确保$theorder不以逗号开头,然后尝试仅在一行上订购。如果可行,请继续添加更多。

=============== 编辑=================

抱歉,您正在尝试对字段进行子排序。错过了那部分,所以这是发生了什么:

您需要提供所有字段进行排序,否则 MySQL 会先对您未提供的每个字段进行排序,然后再对您提供的字段进行排序。如果需要,您可以提供要排序的字段子集,但您需要以相反的顺序提供它们,然后使用 DESC 表示法,例如:

ORDER BY FIELD (field,'lastsort',middlesort','firstsort') desc

这将按以下顺序显示您的列表:

firstsort items
middlesort items
lastsort items
<all other options, in reverse alphabetical order> items

关键部分是您需要添加所有字段值以进行排序。(或使用解决方法)。

于 2012-05-01T20:51:48.260 回答