我有一张包含以下字段的表格。 event_id
,month
,day
,year
,event
,place
。我想要的是根据日期显示即将到来的记录。这是我的代码,它给了我所有的数据。
$news = mysql_query("SELECT * FROM tblupcomingevents limit 5") or die(mysql_error());
while($row = mysql_fetch_array($news))
<?php echo $row ["month"] ?>
<?php echo $row ["day"] ?>
<?php echo $row ["year"] ?>
<?php echo $row ["event"] ?>
<?php echo $row ["place"] ?>
答案 0 :(得分:2)
最佳解决方案是以date()
格式将日期存储在数据库中
然后使用以下查询
SELECT * FROM tblupcomingevents WHERE event_date >= CURRENT_DATE() order by event__date limit 5;
答案 1 :(得分:1)
首先,您应该将日期存储在一列中,然后根据需要使用日期功能即时使用它们 在这种情况下,您可以使用以下查询
$news = mysql_query("SELECT * FROM tblupcomingevents WHERE date >= DATE(NOW()) limit 5") or die(mysql_error());
你也可以在目前的情况下实现相同的目标,但你必须从数据库获得结果,然后你将循环它并检查未来一次并将它们存储在最终数组中,然后再次使用该数组。
因此需要加载而不是优化方法
答案 2 :(得分:1)
正确的解决方案可能是更改数据库以实际保存事件的日期,然后只查询它:
SELECT * FROM tblupcomingevents WHERE event_date >= CURRENT_DATE() LIMIT 5
如果无法做到这一点,您可以使用str_to_date
函数构建类似的行为:
SELECT *
FROM tblupcomingevents
WHERE STR_TO_DATE(CONCAT(`year`, `month`, `day`), '%Y%m%d') >=
CURRENT_DATE()
LIMIT 5
答案 3 :(得分:1)
最佳解决方案是以date()
格式将日期存储在数据库中
然后使用以下查询
SELECT * FROM tblupcomingevents WHERE event_date >= CURRENT_DATE() order by event__date limit 5;
$news = mysql_query("SELECT * FROM tblupcomingevents WHERE event_date >= CURRENT_DATE() order by event__date limit 5") or die(mysql_error());
while($row = mysql_fetch_array($news))
<?php echo $row ["event_date"] ?>
<?php echo $row ["event"] ?>
<?php echo $row ["place"] ?>