2011-06-17 67 views
0

我試圖從PHP插入未來日期到MySQL表中。我已經能夠使用strtotime插入當前日期,但是當我給這個調用添加時間時,它似乎並不插入它。下面是代碼:需要幫助通過PHP在MySQL中設置未來日期

<?php 
$currentDate = strtotime('now'); 
$expirationDate = strtotime('+ 90 days'); 

include_once "mysql-connect.php";  

$cur = "UPDATE table SET current_date = FROM_UNIXTIME($currentDate) WHERE ..."; 

if (!mysql_query($cur,$con)) 
{ 
die('Heres Your Error: ' . mysql_error()); 
} 
echo "the date is set"; 

$exp = "UPDATE table SET expiration_date = FROM_UNIXTIME($expirationDate) 
WHERE ..."; 


if (!mysql_query($exp,$con)) 
{ 
die('Heres Your Error: ' . mysql_error()); 
} 
echo " expiration date is set"; 

mysql_close($con) 
?> 

就像我說的,當我運行這個它會插入當前日期到CURRENT_DATE行的要求。由於某種原因,它不會插入在當前日期前90天的expiration_date。我已覈實將來有效期爲90天。爲什麼這不起作用?

+0

最後一次更新是否返回任何錯誤? – BugFinder

+0

什麼是「mysql_error()」? –

回答

4

你可以做到這一點在MySQL directly

$days = 90; 

$sql = "UPDATE ... SET expiration_date = DATE_ADD(current_date, INTERVAL $days DAY);" 

which'll爲您節省多餘的往返距離datetime-> UNIX timestamp->日期時間。

+0

+1,簡單而優雅。 – Mattis

+0

是的是的。這工作grrrrrreat! – Presto

1

使用strtotime()函數是一個壞主意,因爲它並不總是很好地工作。

而不是在PHP中做日期,我建議你直接在MySQL中做它們,它提供了一個體面的日期時間函數池 - http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

您的查詢,你可以這樣做:

UPDATE `table` 
SET `current_date` = NOW(), `expiration_date` = DATE_ADD(NOW(), INTERVAL 90 DAY) 
WHERE ...; 

順便問一下,您所查詢的情況下,做了第二次更新返回任何錯誤。以下IF的哪一部分執行?