【问题标题】:PHP MySQLi Query between two times from the query itselfPHP MySQLi 查询两次之间从查询本身
【发布时间】:2013-12-12 23:03:24
【问题描述】:

我基本上无法找出如何从我正在查询的查询中获取“开始时间”和“结束时间”,因此它会在事件的时间之间显示数据库中的数据。

MYSQL 查询

$resultEvents = mysqli_query($con,"SELECT * FROM events WHERE starttime >= (SELECT starttime FROM events) and endtime <= (SELECT endtime FROM events)");

PHP 显示

<?php 
        while($events = mysqli_fetch_array($resultEvents)){
                echo '<div id="eventnotification">';
                echo '<a href="./events/' . $events[1] . '"><div class="enc-' . $events[2] . '">';
                echo '<h5 class="notificationtitle">' . $events[3] . '</h5>';
                echo $events[4];
                echo '</div></a>';
                echo '</div>';
            }
         ?>

在名为events的数据库表中,有:

  • 身份证
  • 事件名称
  • 标题
  • 说明
  • 文章
  • 创作者
  • 开始时间
  • 结束时间

从该行中选择的数据显示在页面上,但仅显示该行的开始时间和结束日期之间的数据,否则不显示。

【问题讨论】:

  • 您的开始时间和结束时间到底是多少?这些子选择正在从您的事件表中获取所有开始时间和结束时间。您需要使用 PHP 将开始时间和结束时间传递给查询。
  • 开始时间和结束时间都是TIMEDATE类型。
  • 这不能回答我的问题。什么是开始时间和结束时间?您如何确定确切的时间?
  • boojer 是对的。您当前的语句将使用事件中的随机行,并且它们的开始/结束时间在 where 中使用。我认为这不是你想要的。
  • 目前还不清楚你想要实现什么,但我看到你根本不需要 where 子句。或者?请清楚地描述您想要实现的目标

标签: php mysql sql


【解决方案1】:

我觉得BETWEEN会更简洁:

$resultEvents = mysqli_query($con,"SELECT * FROM events WHERE NOW() BETWEEN starttime AND endtime");

【讨论】:

  • 这是正确的,但开始/结束时间 '2013-12-12' 和 '2014-01-01' 在行表内。时间已经在我查询的行中设置好了。
  • 好吧,发布的查询实际上没有意义,它可能已经简化为SELECT * FROM events,我假设你想使用当前时间,所以我更新了我的答案在开始时间和结束时间之间为 NOW()
  • @RobM。 +1 终于有人在日期和时间之间使用 BETWEEN 了! (我已经记不清有多少次有人对我说“这不可能。”)
  • @AlpineArctic 应该显示什么时间以及在哪里显示输出示例?
  • @bishop 这只是 IMO 查询 x 和 y 之间值的最佳方式 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 2015-05-05
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 2018-01-17
相关资源
最近更新 更多