2012-09-03 24 views
0

我正在寫密碼恢復代碼,它使用一個令牌和一個以date("Y-m-d H:i:s")格式存儲的日期,例如2012-09-06 18:59:53。我用下面的代碼來檢查,如果用戶ID令牌項是否存在:如何查看相關日期?

$sql = mysql_query("SELECT * FROM `recoveryemails` WHERE `UserID` = '$uid' and `Key` = '$key' and `expDate` >= '$curDate'"); 

我需要檢索EXPDATE來檢查它是否是年齡超過3天,使用PHP後添加另一個條件。任何人都可以幫我解決這個PHP代碼?

回答

3

這是在MySQL容易得多:WHERE ... AND expdate >= DATE_SUB(NOW(),INTERVAL 3 DAY)

但是如果你堅持用PHP來做,你將需要:

$threedaysago = strtotime("-3 days"); 
$expdate = strtotime($row['expDate']); 
if($expdate >= $threedaysago) { /* more recent than three days ago */ } 
+0

我真的會推薦純SQL路由。只需將'expDate'字段設置爲時間戳類型,並將其默認值設置爲'CURRENT_TIMESTAMP',並刪除垃圾清理中的所有過期行。 – Shea

+0

我堅持,因爲它與MySQL的一些問題,我真的不能理解,當我嘗試今天通過PHP回聲日期今天是第三和當我嘗試通過MySQL獲取今天的日期它顯示正確的日期,今天是第四。不知道爲什麼這樣的時間通過MySQL和PHP的時間差異 –

+1

審查您的MySQL和PHP的時區設置,然後重新啓動您的服務器。 – Shea

0

在MySQL

expDate > DATE_SUB(NOW(), INTERVAL 3 Days) 
+0

語法錯誤'正確的語法使用附近'天) ' –

0

只是包裝中的strtotime(MySQL的日期結果),並比較的strtotime(' - 3天)