Php While循环中的记录排序
这就是问题所在,我不知道如何解决。假设我有这样的问题:Php While循环中的记录排序,php,mysql,Php,Mysql,这就是问题所在,我不知道如何解决。假设我有这样的问题: SELECT news_key FROM tblNews (WHERE news_key>100); while ($row = mysql_fetch_array($rid)) { $key=$row['news_key']; SELECT articles from tblMain WHERE news_key=$key; while ($row2 = mysql_fetch_arra
SELECT news_key FROM tblNews (WHERE news_key>100);
while ($row = mysql_fetch_array($rid)) {
$key=$row['news_key'];
SELECT articles from tblMain WHERE news_key=$key;
while ($row2 = mysql_fetch_array($rid2)) {
echo ($row['articles']);
}
}
SELECT articles, popularity
FROM tblNews
JOIN tblMain
ON (tblNews.news_key = tblMain.news_key)
WHERE news_key > 100
ORDER BY popularity DESC
现在让我们假设我想按流行程度对文章进行排序,这样我就可以将我的第二个查询更改为如下内容
SELECT articles, popularity from tblMain WHERE
news_key=$key ORDER BY popularity DESC;
但现在这行不通了,因为它只是在第一个循环找到记录时抓取记录。另外,我在这里做了一个非常简单的说明,我知道在第一个查询中连接表可以做到这一点,但是在我的实际示例中的第一个查询有很多计数和分组,所以我担心这不是一个选项。我还应该提到我涉及分页,所以每次选择页面时都会重新查询第一个查询
有什么建议吗?在这种情况下,您必须使用一个
JOIN
将两个表连接在一起并对结果排序。您的查询应该如下所示:
SELECT news_key FROM tblNews (WHERE news_key>100);
while ($row = mysql_fetch_array($rid)) {
$key=$row['news_key'];
SELECT articles from tblMain WHERE news_key=$key;
while ($row2 = mysql_fetch_array($rid2)) {
echo ($row['articles']);
}
}
SELECT articles, popularity
FROM tblNews
JOIN tblMain
ON (tblNews.news_key = tblMain.news_key)
WHERE news_key > 100
ORDER BY popularity DESC
通过这种方式,您应该能够获得正确的结果。假设您不想执行联接(无论出于何种原因,如果您担心锁定表或编写过于复杂的SQL,那么您可以将第一个查询中的键加载到数组中,对数组进行排序,然后遍历数组以运行第二个查询:
// SELECT news_key FROM tblNews (WHERE news_key>100);
// Execute query.
$keysArray = array();
while ($row = mysql_fetch_array($rid)) {
$keysArray[] =$row['news_key'];
}
arsort($keysArray);
foreach ($keysArray as $key) {
// SELECT articles from tblMain WHERE news_key=$key;
// Execute query.
while ($row2 = mysql_fetch_array($rid2)) {
echo ($row['articles']);
}
谢谢你的建议!事实上,我已经接受了你的建议,返回并加入了第一个查询…这很复杂,但我想我已经做到了 非常感谢