循环 SQL 行并对其进行排序


Looping SQL rows and sorting them

正如答案中指出的那样,我不是要组织结果,而是要过滤它们。很抱歉造成混乱!:D

我已经尽力用谷歌搜索解决这个问题,但我很难找到解决方案。

我有一个具有这种结构的SQL数据库,因为我正在尝试制作一个基本的CMS:

PageID | title | pagetext | menu_par

我想做的是在页面上进行导航,循环所有行并使它们看起来像链接,这是我的老师几个月前帮助我做的:

$query_MenuItems = "SELECT pageid,title,menu_par FROM v2 ORDER BY menu_par ASC";
$MenuItems = $mysqli->query($query_MenuItems);
$row_MenuItem = $MenuItems->fetch_assoc();
$totalRows_MenuItems = $MenuItems->num_rows;    
do { echo 
"<a href='"?page={$row_MenuItem['pageid']}'">{$row_MenuItem['title']}</a><br/>";
} 
while ($row_MenuItem = $MenuItems->fetch_assoc());
}

这工作正常,但是我的问题是我不知道如何根据它们的menu_par值对不同的链接进行排序。

我觉得我已经尽我所能解决这个问题,这让我感到压力很大

有什么方法可以制作与上面的循环类似的循环,但使用多个循环对其进行排序?

while ($row_MenuItem = $MenuItems->fetch_assoc())
{
if ("{$row_MenuItem['menu_par']}" == '1') echo
"<a href='"?page={$row_MenuItem['id']}'">{$row_MenuItem['title']}</a><br/>";
}

希望你们能帮我:)

为什么不在 SQL 查询中使用 ORDER BY

SELECT pageid,title,menu_par FROM v2 ORDER BY menu_par ASC

通过此查询(以及 ORDER BY x ASC 子句),记录按menu_par值升序排序...

您可以在此处阅读有关此内容的更多信息:http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html

如果您想根据menu_par值过滤结果(例如,您只想选择那些具有menu_par == 1的链接),您可以使用WHERE子句:

SELECT pageid,title,menu_par FROM v2 WHERE menu_par = 1

首先,我没有阅读整个问题,而是加载所有数据,然后,将其排序到 PHP 中似乎不是一个好主意。DBMS就是为此而设计的,由于你对检索数据的查询,你应该通过做这样的事情直接对它们进行排序。

SELECT pageid,title,menu_par FROM v2 order by menu_par

你应该在数据库中使用 WHERE 子句执行此操作。

SELECT pageid,title,menu_par FROM v2
WHERE menu_par = 1