需要帮助通过PHP在MySQL中设置未来日期

时间:2011-06-17 21:57:06

标签: php mysql date strtotime

我试图从PHP中将未来的日期插入到MySQL表中。我已经能够使用strtotime插入当前日期,但是当我为此调用添加时间时,它似乎没有插入它。这是代码:

<?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天内被提取。为什么这不起作用?

2 个答案:

答案 0 :(得分:6)

您可以在MySQL directly中执行此操作:

$days = 90;

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

这将为您节省从datetime-&gt; unix timestamp-&gt; datetime多余的往返。

答案 1 :(得分: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 ...;

顺便说一下,对于你的查询案例,第二个UPDATE是否会返回任何错误。以下IF的哪一部分执行?