【问题标题】:How can I select all id's from a sql table in descending order and then echo them (in php)?如何按降序从 sql 表中选择所有 id,然后回显它们(在 php 中)?
【发布时间】:2016-04-17 21:53:31
【问题描述】:

我在一个名为“排行榜”的表中有几个 ID,它们属于不同的用户。它们被命名为:“id_user”并且它们顺序不正确。我想要做的是在 leaderbord 中打印 div,其中应该包含我从这些 id_user 获得的一些信息。

我唯一的问题是,在研究了stackoverflow和其他网站之后,我仍然找不到如何选择那些id_user在 降序顺序并且能够一一获取该用户的信息,然后继续使用下一个 id_user,依此类推。

我不知道如何以降序选择每个id_user的特定来执行我已经知道的其他代码怎么办。

我希望它不会与本网站上任何其他先前提出的问题重复(我真的做了研究,但我找不到这个问题的任何具体答案,对于 sql 部分和 php 部分一起)。

非常感谢您。

【问题讨论】:

  • 您可以通过 id_user DESC 从排行榜中进行简单的 select * 排序,然后在 PHP 中获取值。这有意义吗?
  • 问题是您想要来自多个表的信息、排序还是两者兼而有之?您希望它按 id 排序还是按其他值(如某种分数)排序?
  • 是的,部分。因为我到处寻找答案或部分答案,我只找到 SQL 代码来做这件事,而不是 php 代码来获取这些结果中的每一个并使用每行包含的 id 来做我必须做的其他事情之前在代码中打印这些结果后记。
  • 我想要的是 SQL 代码以降序从一个表中选择所有这些 id,然后是 PHP 代码来操作每一行包含的信息(就像一个 foreach 做某事)。

标签: php sql select row


【解决方案1】:

您的表之间的 INNER JOIN 将实现您想要的。

SELECT *
FROM users
JOIN leaderboards WHERE users.id = leaderboards.id_user
ORDER BY users.id DESC

在每个返回的行中,您将从usersleaderboards 表中获取列,因此循环遍历结果并回显您需要的用户的信息。

$query = 'SELECT...';
$res = mysqli_query($query);
while ($row = mysqli_fetch_assoc($res)) {
    echo '<div>'.$row['id'].' - '.$row['username'].' - '.$row['image'].'</div>';
}

【讨论】:

  • 嗯,实际上这对我有很大帮助。我需要每个用户 ID 是其个人资料图像和用户名。但是,如何操作此 sql 选择所做的每一行?
  • 好的,为了进一步帮助你,我添加了一些 PHP 代码来循环结果。请阅读有关“mysql_fetch_assoc”或类似函数的 PHP 文档,您会发现很多示例。
  • 我现在正在测试您的答案,它更符合我的需求。谢谢你。我只是想问你:如何根据“x”事物按降序排列结果,对“y”事物按升序排列结果?我正在尝试类似:ORDER BY leaderboards.time DESC 和 ORDER BY leaderboards.distance ASC 但它不起作用
  • 因为我试图根据每个用户为他们参与并已经完成的虚拟跑步所做的距离和时间来显示排行榜位置。如果所有用户都完成了所需的距离,例如 5 公里的虚拟跑步,那么如果我使用 ORDER BY leaderboards.time DESC 它就可以完美运行。但是,如果我还想评估谁跑的距离最长,完成它的时间最短,我会迷路,不知道如何进行。
  • 只需删除“AND ORDER BY”。排序标准是逗号分隔的,所以写“ORDER BY leaderboards.time DESC, leaderboards.distance ASC”。这种信息很容易找到,所以我猜你开始阅读 MySQL 文档,或者只是 SQL 标准,例如dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html 谢谢 :)
【解决方案2】:

你可以很好地阅读 PHP 和 MySql,但我会给你一个线索。

编辑

$query = "SELECT * FROM `the_name_of_your_table` ORDER BY `user_id` DESC;";

if ($result = mysqli_query($link, $query)) {

    /* fetch associative array */
    while ($row = mysqli_fetch_assoc($result)) {
        print $row["user_id"] . " - " . $row["username"] . "<BR>";
    }

    /* free result set */
    mysqli_free_result($result);
}

【讨论】:

  • 感谢您的回答和您的宝贵时间!实际上它真的对我有很大帮助。我只有一个问题:代码中的“bar”是什么意思?
  • Foo/Bar 你会看到到处都是。它们根本没有任何意义,它们只是占位符。因为我不知道您的数据库列的名称,所以我使用了 foo 和 bar。但是您可以将这些更改为 $result['FirstName'] 或 $result['This_is_my_column'],它们仅取决于列的名称。 --> en.wikipedia.org/wiki/Foobar
  • 所以,如果我这样做: $row = mysqli_fetch_array($result, MYSQLI_ASSOC); $id_user = $row["id_user"];回声 $id_user 。 "
    ";
    在你写的 foreach 里面,它工作正常吗?
  • 壮观。非常感谢!你已经回答了我的问题并解决了我的问题。
  • 我已经对代码进行了一些小的改动,它可以工作,但“DESC”似乎不起作用。我使用的 SQL 代码是:$query1 = "SELECT * FROM leaderboards ORDER BY id_user DESC"; 我打印了所有的 id,但它们在表中的顺序相同,而不是在表中降序(我也尝试过使用 ASC,但似乎也不起作用)。我能做什么?
猜你喜欢
  • 1970-01-01
  • 2014-02-28
  • 1970-01-01
  • 1970-01-01
  • 2020-06-06
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
相关资源
最近更新 更多