我正在使用MySQL数据库,通过PHP访问它,我希望它不会显示比今天的日期更早的条目。我花了一段时间让它订购它们。我以前有过它的工作,现在它不是了。我按ASC按日期订购了它们,很好,但它仍然显示较旧的条目。我知道我的PHP已经过时了,但任何方法都对我有用。这是我的代码。
对不起,如果我是一个完整的迪兹..如果我不知道,我会来这里,而且我对此比较陌生,总是挂断约会。
到目前为止,有人建议:更改"日期"列的名称。"date"存储为日期时间,而不是字符串,因此将其更改为int
// this is where its set to show today and future dated entries
$sql = "SELECT * FROM $db WHERE date >= '$today' ORDER BY date ASC" or die(mysql_error());
$getit = mysql_query ( $sql, $conn );
print "<br><b><font size=4>Appointments Coming Up</b></font>";
while($row = mysql_fetch_array($getit, MYSQL_ASSOC))
{
print "<br>";
$row[date] = date("D-M-d-Y", strtotime($row[date]));
print "<br><font size=3><b>{$row['doctor']} at {$row['time']} {$row['ampm']} on $row[date]</font>";
}
解决了 我所做的只是将数据库中的日期列更改为"dateappt",它起作用了。谢谢大家的帮助。
"Date"是一个保留字(区分大小写),因此您应该更改此列的名称。
MySQL仅对日期使用"YYYY-MM-DD"格式,因此您的格式必须与此(您的$today)匹配。
http://dev.mysql.com/doc/refman/5.0/en/using-date.html
使用时间戳可能更好。
不过,还有其他操作日期的方法:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
您应该检查mysql中的字段"date"类型,如果是datetime,则将一个更改为"int"
这个答案是假设您将日期存储为字符串,因为这似乎是可能的罪魁祸首。
当日期存储为字符串(char()
,varchar()
)而不是实际日期(date
,datetime
)时。这意味着它们将被排序为字符串而不是日期。所以12-31-2009
在01-01-2014
之后,因为MySQL看到"0"的第一个字符并将其放在以"1"开头的日期之前。当您为日期值使用正确的数据类型时,MySQL 会将它们排序为日期而不是字符串,然后12-31-2009
在 01-01-2014
之前。