显示它们之前如何从数据库中订购获取的对象?

时间:2019-06-25 06:02:19

标签: php css mysql

网站由在不同日期发生的事件组成。要压缩计划外的事件,我想按日期对事件进行排序,这显然是行不通的。 “基准”行是mySQL数据库中的日期值。

我尝试将Date作为主键,但是尽管查询中给出了降序,但现在最旧的Event在顶部了

<?php
    require 'datenbank.php';
    $q = "SELECT Eventname ,Datum , Uhrzeit FROM events ORDER by 'Datum' DESC";
    $result = $mysqli->query($q) or die(mysqli_error($mysqli));

    if ($result) {
    while ($row = $result->fetch_object()) {


    $title = $row->Eventname;
    $date = $row->Datum;
    $newDate = date("d.m.Y", strtotime($date));
    $time = $row->Uhrzeit;
    $beschr = $row->Beschreibung;
    $path = $row->Plakat;


    echo "$beschr <br> <strong> Datum: $newDate <br> Start: $time </strong> </div> \n";

}
}

?>

输出应为升序,尽管从日期开始应为降序

3 个答案:

答案 0 :(得分:1)

不要在列名中使用引号

 "SELECT Eventname ,Datum , Uhrzeit FROM events ORDER by Datum DESC";

如果您使用引号作为“基准”,则它不是列名,而是文字字符串

答案 1 :(得分:1)

请注意,您使用的单引号-'Datum'是字符串文字,因此,根据其合法排序时,它毫无意义-所有行将具有相同的值,并且结果将仅返回以任意顺序。要根据Datum 进行排序,请删除这些引号:

$q = "SELECT Eventname ,Datum , Uhrzeit FROM events ORDER BY Datum DESC";
# Quotes removed here --------------------------------------^-----^

答案 2 :(得分:1)

<?php
    require 'datenbank.php';
    $q = "SELECT `Eventname` ,`Datum` , `Uhrzeit` FROM events ORDER by `Datum` DESC"; // notice the backticks in Datum Column name
    $result = $mysqli->query($q) or die(mysqli_error($mysqli));

    if ($result) {
    while ($row = $result->fetch_object()) {


    $title = $row->Eventname;
    $date = $row->Datum;
    $newDate = date("d.m.Y", strtotime($date));
    $time = $row->Uhrzeit;
    $beschr = $row->Beschreibung;
    $path = $row->Plakat;


    echo "$beschr <br> <strong> Datum: $newDate <br> Start: $time </strong> </div> \n";

}
}

?>

在sql查询中写入列名称时,应始终使用反斜杠。