在非对象上调用成员函数modify()

时间:2014-08-11 03:56:25

标签: php mysql sql date

所以我试图检查重置链接是否过期。这就是我得到的东西

//Get token data
$stmt = $con->prepare("SELECT token_created_at from reset WHERE token = :urltoken");
$stmt->bindValue(':urltoken', htmlspecialchars($_GET['token'], ENT_QUOTES, 'UTF-8'));
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while($row = $stmt->fetch()) {
     $token_created_at = $row['token_created_at'];
}

$token_created_at;

//Return current time to match
$current_time = new DateTime(); 

$my_dt = DateTime::createFromFormat('m-d-Y H:i:s', $token_created_at);

//Modify error
$expires_at = $my_dt->modify('+1 hour');

我如何设置用户要求重置的日期

//Get creation time 
$time_gen = date('m-d-Y H:i:s', time());

现在发生的事情是我

  

致命错误:在第26行的/Users/MATT/Desktop/Learn/forgot/activate.php中调用非对象的成员函数modify()

第26行

$expires_at = $my_dt->modify('+1 hour');

有什么想法吗?我已尝试过其他帖子,但他们似乎并不适用于我的问题。它们还存储为VARCHAR

1 个答案:

答案 0 :(得分:4)

根据PHP docs

  
    

DateTime :: createFromFormat返回值

         

失败时返回新的DateTime实例或FALSE

  

因此,$my_dt变量非常可能FALSE,这肯定会导致错误。

如果您使用的是标准的MySQL 'Y-m-d H:i:s'类型,那么您的时间格式字符串可能需要为DATETIME