0

我找不到这个问题的正确答案。我有一个非常简单的代码,用于在 mysql 中进行查询,以从表(称为注释)中选择确定列(称为流行度)中具有最大值的行。每行都有一个名为 comment_id 的列

这是代码:

$connect_error = '对不起,再试一次,出现连接错误';

$con = mysqli_connect('localhost','user_name','password') or die($connect_error);

mysqli_select_db($con, 'database') or die($connect_error);

$result = mysqli_query($con, "SELECT MAX(`popularity`) FROM `comments`");

    while ($row = mysqli_fetch_assoc($result)) {
        $most_popular = $row['comment_id'];             
            }

    echo "most popular is: $most_popular";

        mysqli_free_result($result);

        mysqli_close($con); 

屏幕没有显示正确的结果。有人可以在这方面给我一个建议吗?

谢谢

4

5 回答 5

3

您正在寻找显示该字段,但您的查询comment_id中没有该字段。SELECT您只选择最大值popularity,没有别的。

试试这个查询:

SELECT comment_id FROM comments ORDER BY popularity DESC LIMIT 1

这是按受欢迎程度对您的评论进行排序,然后只选择最热门的评论。

当然,您可以轻松更改它以选择更多列,甚至SELECT *如果您希望能够在此记录中显示其他值。

于 2013-08-15T18:53:53.457 回答
1

要选择具有最大“人气”列的行,请使用此查询;

$result = mysqli_query($con, "SELECT * FROM `comments` ORDER BY `popularity` DESC LIMIT 1");

如果您想按受欢迎程度对所有内容进行排序,请删除 LIMIT 1 ...

于 2013-08-15T18:54:53.503 回答
1

你需要

SELECT MAX(`popularity`) AS comment_id FROM `comments`

这将为列提供关联数组的正确名称。

于 2013-08-15T19:04:41.757 回答
0

您正在尝试从名为comment_idwhen 查询结果将被命名的列中读取结果MAX(popularity)

于 2013-08-15T18:54:46.463 回答
0

首先在 mysql "SELECT MAX( popularity) FROM comments" 中运行这个查询。它的输出为您提供了与 $row[ index] 一起使用的索引,即第一行,在这种情况下,索引将是popularity否则只需将 $row[ content_id] 更改为 $row [ popularity]

于 2019-08-28T14:47:53.897 回答