网站由在不同日期发生的事件组成。要压缩计划外的事件,我想按日期对事件进行排序,这显然是行不通的。 “基准”行是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";
}
}
?>
输出应为升序,尽管从日期开始应为降序
答案 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查询中写入列名称时,应始终使用反斜杠。