我已经搜索了这个主题并提出了一些答案,但它们似乎不起作用。我是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 数据库,格式类似于"2014-12-11 08:45:56"。问题是,每次我在脚本后面回显$pastdue变量时,它都会使用第一个变量"此订单早于 52 天"。它将无法识别订单是否在 0 到 52 天之间。对我做错了什么有什么想法吗?还是更好的方法?MySQL 数据库中的字段是日期时间字段。
基本 PHP:'
带引号的字符串不插值变量:
if(strtotime('$orderdate')
^----------^
你把文字字符$
、o
、r
、d
等传递给strtotime(),这当然不是一个有效的日期。因此,它将返回布尔值 false,为了<=
比较,该值将转换为整数 0。
对于像这样的基本"将变量作为参数传递"函数调用,绝对没有理由使用引号:
if(strtotime($orderdate)
由于这一切都来自MySQL,你可以在mysql中进行检查,节省一些往返类型转换:
SELECT ... (datefield <= (CURDATE() - INTERVAL 52 DAY)) AS older, ...
然后你会得到一个简单的$row['older']
字段,其中包含一个0
或一个1