我有时间戳问题。我想检查时间戳是过去还是将来。如果是过去的时间,则应该进行查询。
到目前为止,我得到了一个将由
获取的 mysql-timestamp$row = $query->fetch_object();
$timestamp = $row->time
其中包含:
2012-04-04 12:06:38
对于进一步的设置,我使用另外两个变量:
$added = $timestamp + 1209600; //what adds 14days (1209600 seconds) to my db-timestamp
$check = $added < time(); //what checks if the 14days have passed or not
现在,如果我用 var_dump 测试所有这些,它将返回每个:
string(19) "2012-04-04 12:06:38" at var_dump($timestamp)
int(1211612) at var_dump($added)
bool(true) at var_dump($check)
所以我的问题是,即使 14 天应该已经过去,以下查询也会一直执行。我知道这一点,因为我将时间戳更改为一月份的较早日期。这是我的查询:
if ($check === true){
$update = $db->query("UPDATE table SET xy='1' WHERE x='$x'");
}
似乎有什么不对劲,我不知道那可能是什么。
最佳答案
我同意barsju的观点。 MySQL 的结果是 DateTime 条目的字符串,而不是实际的时间戳。将其保留在 PHP 中的另一个选项是 strtotime($string); 它将把字符串转换为其时间戳。重要的是您在检查之前会得到一个时间戳。
我会在你的示例的这一行上执行此操作:
$timestamp = strtotime($row->time);
我相信还有其他几种方法可以让 MySQL 返回时间戳。
关于php - 时间戳查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020738/