【问题标题】:Sort data by newest to oldest PHP按最新到最旧的 PHP 对数据进行排序
【发布时间】:2016-07-14 13:01:41
【问题描述】:

我将数据存储在数据库中,并在网页上显示它,目前它按从最旧到最新的顺序排列,但我希望首先显示最新的,我尝试了一些方法,比如添加这个我在另一个堆栈溢出问题中找到的代码;

$files[$mod_time] = $basedir.'/'.$filename;

并尝试像这样进行 mysql 查询;

$query = mysql_query("SELECT * FROM users LIMIT $start, $per_page ORDER BY ID DESC");

也许我没有将代码放在正确的位置,这是我的代码中提取数据的部分;

if ( $stmt = $mysqli->prepare("SELECT * FROM memo Where uid = ? " ) ) {
    $stmt->bind_param("i", $uid2);
    $stmt -> execute();
    $stmt -> bind_result($id, $note, $uid3);
 }
        $output=array();
        $out_id=array();
        $out_note=array();
        $i=0;
            while ($stmt->fetch()) {
                //$out_id[$i]=$id;
                //echo $out_id[$i] . " / ";
                $out_note[$i]=$note;
               echo $out_note[$i]. " <br>";
               //echo $i. "<br>";
                $i++;    
            }
        $output = array($out_note,$out_id);
        rsort($output);

我是 PHP 新手,任何帮助或建议对我都有好处,非常感谢。

这是我的桌子的样子;

Heres the table

【问题讨论】:

  • memo 表中的哪个字段定义了备忘录的创建时间?
  • 是的。你能显示表格定义吗?并描述一下,尤其是 id。
  • 我已将我的表格添加为我的帖子中的 imgur 链接

标签: php mysql sql database web


【解决方案1】:

我猜uid 是一个 AUTO_INCREMENT 字段? 如果是这种情况,您可以简单地替换这一行:

if ( $stmt = $mysqli-&gt;prepare("SELECT * FROM memo Where uid = ? " ) ) {

这个:

if ( $stmt = $mysqli-&gt;prepare("SELECT * FROM memo Where uid = ? ORDER BY uid DESC" ) ) {

当然,最好在表中有一个包含备忘录创建日期的列(例如 DATETIME created_at)。然后,你应该使用ORDER BY created_at DESC

您应该阅读 MySQL 中的 ORDER BY 子句:

http://www.techonthenet.com/mysql/order_by.php

【讨论】:

  • 您好,感谢您的回答,我的 uid 目前设置为 null,我将尝试将其更改为自动增量,如果这不起作用,我将尝试添加创建日期字段并以这种方式排序
  • 使用这种排序对我有用 if ( $stmt = $mysqli->prepare("SELECT * FROM memo Where uid = ? ORDER BY id DESC" ) ) { 谢谢
  • 很高兴能帮上忙。但您可能会考虑使用“created_at”字段。有时,您可能会遇到最后插入的 ID 不应该是按时间顺序排列的最后一项的情况(例如,如果您插入一条忘记添加的记录)。
猜你喜欢
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
相关资源
最近更新 更多