我正在处理一个mysql查询,其中只显示即将发生的事件。但我每次都有一个空白屏幕,显示在过去的事件列表中。
今天=2018年7月22日,
即将举行的活动日期(eventid)=2018年7月29日
我的问题是:
SELECT * FROM event WHERE eventDate > CURDATE() ORDER BY STR_TO_DATE(eventDate,'%d %F %Y')
php代码(无css):
$result = mysqli_query($con, $sql);
while($row = mysqli_fetch_assoc($result)) { ?>
<?php echo $row['eventName'] . "<br/>" ?>
<?php echo $row["eventDate"] . "<br/><br/>" ?>
<?php } ?>
数据库表:
eventID int(11) AUTO_INCREMENT
eventName varchar(255)
eventDate varchar(255)
我已经试过了 CURRENT_DATE()
, NOW()
& >=
正如我在过去的列表中告诉我即将举办的活动,以及所有其他活动。 eventDate < CURDATE()
1条答案
按热度按时间x759pob21#
你的问题是你在用字符串比较日期。结果至多是无法预测的。您需要重写表结构,将eventdate设置为日期而不是varchar列。
请阅读这里关于如何将您的列正确转换为日期类型。
我已经为你重写了你的代码,因为我觉得这个地方应该从codereview得到一些提示。