Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表中的PHP数据,其中todays date位于两个字段的范围内_Php_Mysql - Fatal编程技术网

表中的PHP数据,其中todays date位于两个字段的范围内

表中的PHP数据,其中todays date位于两个字段的范围内,php,mysql,Php,Mysql,我有一个名为orders的表,其中包含orderID、StartDate、EndDate,等等 我想知道今天的日期是否在StartDate和EndDate范围内。作为起点,我想打印适用的结果 这是我的代码,我就是不能让它工作。而且,CURDATE()对我不起作用 <?php //$originalDate = "2010-03-21"; //$newDate = date("d-m-Y", strtotime($originalDate)); include "dbh

我有一个名为
orders
的表,其中包含
orderID
StartDate
EndDate
,等等

我想知道今天的日期是否在
StartDate
EndDate
范围内。作为起点,我想打印适用的结果

这是我的代码,我就是不能让它工作。而且,
CURDATE()
对我不起作用

 <?php
    //$originalDate = "2010-03-21";
    //$newDate = date("d-m-Y", strtotime($originalDate));

 include "dbh.php";

   $today = DATE("Y-m-d");
    // WHERE $today > StartDate OR $today < EndDate OR $today > SuspendEnd 
 OR $today < SuspendStart";

   //{
     //  echo $today;
   //}


    $sql= "SELECT * FROM orders 
    WHERE $today = StartDate
    ";

    $records = mysqli_query($conn,$sql);

    while($row = mysqli_fetch_assoc($records)){

        echo "<tr>";

        echo "<td>".$row['OrderID']."</td>";
        //echo "<td>".$row['StartDate']."</td>";

        echo "</tr>";

    }

 ?>

我没有运行mysql来测试这一点,但你可以试试

select orderID from orders where (CURDATE() between StartDate and EndDate)

您只需使用以下SQL查询即可获取当前所有订单:

SELECT
    *
FROM
    orders
WHERE
    CURRENT_DATE() BETWEEN StartDate AND coalesce(EndDate, CURRENT_DATE) ;
它使用MySQL已经有一个函数来表示“今天”(因此,您不需要从PHP传递今天的值)。如果“EndDate”可以为空,并且希望它表示“永不结束”,则使用
COALESCE
到今天的日期将使上一个查询工作

随时检查一切


参考资料:


请编辑您的代码。。。事实上,这是没有意义的,就像你把一些文本剪切粘贴到了不合适的地方。为您的
orders
表添加
CREATE TABLE
语句也会有所帮助。您在代码中使用
CURDATE()
$today
是一个应该被引用的字符串,就像mysql从年月中减去年月一样。尝试
SELECT*FROM orders,其中curdate()在datestart和dateend之间
我已经做了一些基本的清理。请你的问题更清楚地解释什么不起作用。理想情况下,您应该提供一个。