首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用PHP从MySQL查询显示即将到来的事件

使用PHP从MySQL查询显示即将到来的事件
EN

Stack Overflow用户
提问于 2018-07-23 02:29:06
回答 1查看 1.1K关注 0票数 -1

我正在处理一个MySQL查询,其中只显示即将到来的事件。但我每次都得到一个空白屏幕,并显示在过去的事件列表中。

今天=2018年7月22日,

即将到来的活动日期(eventID) = 2018年7月29日

我的问题是:

代码语言:javascript
复制
SELECT * FROM event WHERE eventDate > CURDATE() ORDER BY STR_TO_DATE(eventDate,'%d %F %Y')

PHP代码(没有css):

代码语言:javascript
复制
$result = mysqli_query($con, $sql);


                                    while($row = mysqli_fetch_assoc($result)) { ?>

<?php echo $row['eventName'] . "<br/>" ?>
<?php echo $row["eventDate"] . "<br/><br/>" ?>
<?php } ?>

数据库表:

代码语言:javascript
复制
eventID int(11) AUTO_INCREMENT
eventName varchar(255)
eventDate varchar(255)

我已经尝试过CURRENT_DATE()NOW()>=

正如我在过去的列表中告诉我的即将到来的活动显示,以及所有其他活动。eventDate < CURDATE()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-23 03:00:40

您的问题是您正在将日期与字符串进行比较。充其量,结果将是不可预测的。您需要重写表结构以将eventDate设置为日期列,而不是VARCHAR列。

代码语言:javascript
复制
eventDate varchar(255)  <== varchar is the WRONG type here; you want DATETIME or DATE or similar. 

有关如何将列正确转换为DATE类型的信息,请使用。

我已经为你重写了你的代码,因为我觉得这个地方应该借鉴CodeReview的一些技巧。

代码语言:javascript
复制
$sql = "SELECT eventName, eventDate FROM event WHERE eventDate > CURDATE() ORDER BY eventDate";

$result = mysqli_query($con, $sql);
while($row = mysqli_fetch_assoc($result)) { 
    echo htmlentities($row['eventName']) . "<br/>"
    echo $row["eventDate"] . "<br/><br/>"
 } 
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51468082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档