PHP检查日期是否早于X天

时间:2014-12-11 22:05:06

标签: php mysql strtotime

我搜索了这个主题并提出了一些答案,但它们似乎无法发挥作用。我是PHP的初学者,我需要创建一个变量,告诉客户原始订单日期是否早于当前日期的52天。这是我的工作不起作用

$orderdate = $row['OrderDate'];

if(strtotime('$orderdate')<= strtotime('-52 days')){
 $pastdue ='This Order is older than 52 Days';
 }else{
 $pastdue ='This order is newer than 52 Days';
 }

订单日期来自MySQL数据库,格式类似于&#39; 2014-12-11 08:45:56&#39;问题是,每当我在脚本中稍后回显$ pastdue变量时,它就会使用第一个变量&#39;此订单超过52天&#39;。如果订单介于0到52天之间,它将无法识别。我做错了什么想法?或者更好的方法呢? MySQL数据库中的字段是日期时间字段。

1 个答案:

答案 0 :(得分:3)

基本PHP:' - 引用字符串 NOT 插入变量:

if(strtotime('$orderdate')
             ^----------^

您将文字字符$ord等传递给strtotime(),当然不是有效日期。所以它会返回布尔值false,为了<=比较,它将被转换为整数0。

对于基本&#34;传递变量作为参数&#34;像这样的函数调用,绝对没有理由使用引号:

if(strtotime($orderdate)

由于这一切都来自MySQL,你可以在mysql中进行检查,节省一些往返类型转换:

SELECT ... (datefield <= (CURDATE() - INTERVAL 52 DAY)) AS older, ...

然后您会得到一个简单的$row['older']字段,其中包含01