如何从数据库中获取数据然后将其转换为数组,以便对其进行排序?

时间:2014-06-12 14:27:51

标签: php arrays sorting while-loop

所以我试着找出从数据库中获取的数据。我通过计算" article_id"来计算一篇文章的评论数量。在评论表中。这是我的解决方案:

$result = mysqli_query($con, "SELECT * FROM articles");
while ($row = mysqli_fetch_array($result)) {
$id = $row["id"];

$result_2 = mysqli_query($con, "SELECT COUNT(*) AS id FROM comments WHERE article_id=$id");
$row_2 = mysqli_fetch_array($result_2);

echo $row_2['id']."<br>";

示例输出:
0
2
0

但我想这样排序:
2
0
0

所以我理解为此使用sort(),但是当我使用它时它表示参数必须是数组。我已经尝试了一切来使数据像你在这里看到的解决方案一样: Populate PHP Array from While Loop

但它不起作用。我知道我做错了什么。我是一个初学者..所以我希望我不会痛苦。

谢谢

3 个答案:

答案 0 :(得分:0)

你应该几乎从不在另一个查询的while循环中有一个查询。

所以,一石二鸟:

SELECT `articles`.*, COUNT(`comments`.`id`) AS `count`
FROM `articles`
LEFT JOIN `comments`
    ON `comments`.`article_id`=`articles`.`id`
GROUP BY `articles`.`id`
ORDER BY `count` DESC

完成!

答案 1 :(得分:0)

为什么不使用mysql?您可以订购它,并通过一个查询获得评论数:

SELECT articles.*, COUNT(comments.id) as comment_count
FROM articles
LEFT JOIN comments ON comments.article_id = articles.id
GROUP BY articles.article_id
ORDER BY articles.article_id

答案 2 :(得分:0)

可以通过mysql使用以下查询实现

SELECT COUNT(comments.id) as total_comments
FROM article
JOIN comments ON article.id = comments.article_id 
GROUP BY ARTICLE 
ORDER BY total_comments DESC;