php - MySQL 查询结果顺序不正确

标签 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 排序时,它却按 Id 排序? (我知道代码可能容易受到攻击,我认为这是 2010 年的,仍然只有 localhost)。

最佳答案

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

关于php - MySQL 查询结果顺序不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30403608/

相关文章:

php - AUTH_USER 与 LOGON_USER 与 REMOTE_USER

javascript - 在 codeIgniter 中使用单个表进行动态下拉

php - SQL表连接显示更多字段

MySQL:定义正确的索引

java - 如何为我的 Android 应用程序制作表格

php - 用php中的点值替换单词

PHP 和 SSL CA 验证 - 独立于操作系统

php - SQLSTATE[HY000] [1045] 尽管相同的用户名密码组合适用于 mysql_connect,但用户访问被拒绝

python - wmic 无效的 XSL 格式(或)文件名。错误间歇性

python - 我怎样才能从 python 中的 xml 中删除 ns?