MySQL查询导致错误的顺序

时间:2015-05-22 18:32:29

标签: php mysql xml sorting

所以,我有一个文件处理用户键入数字的所有内容,该数字用于显示XML。这是文件的一部分:

while ($push = mysql_fetch_array($push_result)) {
    $item_result = mysql_query("SELECT * FROM adva_".$push['Category']."s WHERE Id = '".$push['Id']."' ORDER BY Level");
    $item = mysql_fetch_assoc($item_result);
}

所以,它应该按级别排序,但它不是,这里是XML(只有相关信息):

<type>
    <Id>2537</Id>
    <Element>2</Element>
    <Level>10</Level>>
</type>
<type>
    <Id>2538</Id>
    <Element>2</Element>
    <Level>40</Level>>
</type>
<type>
    <Id>2540</Id>
    <Element>2</Element>
    <Level>70</Level>>
</type>
<type>
    <Id>2541</Id>
    <Element>2</Element>
    <Level>100</Level>>
</type>
<type>
    <Id>2542</Id>
    <Element>2</Element>
    <Level>130</Level>>
</type>
<type>
    <Id>2624</Id>
    <Element>1</Element>
    <Level>3</Level>>
</type>
<type>
    <Id>2625</Id>
    <Element>1</Element>
    <Level>28</Level>>
</type>
<type>
    <Id>2626</Id>
    <Element>1</Element>
    <Level>53</Level>>
</type>
<type>
    <Id>2627</Id>
    <Element>1</Element>
    <Level>78</Level>>
</type>
<type>
    <Id>2628</Id>
    <Element>1</Element>
    <Level>103</Level>>
</type>
<type>
    <Id>2629</Id>
    <Element>1</Element>
    <Level>128</Level>>
</type>

请参阅,当我明确告知不要时,为什么按ID排序? (我知道代码可能很脆弱,这是从2010年开始我认为,仍然只是本地主机)。

1 个答案:

答案 0 :(得分:1)

您只使用WHERE Id = '".$push['Id']."'在循环内一次获取一个元素。 SQL无法对一个项进行排序。所以它们可能最终与$ push数组中的顺序相同。您希望将所有ID收集到一个数组中,并使用WHERE Id in (...)执行单个查询。 (在&#34;语句中搜索SQL&#34;)。那么你的排序会起作用,也会更有效率。