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


Need Help Setting Future Date in MySQL via PHP

我正试图从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天。为什么不起作用?

您可以直接在MySQL中完成:

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

这将为您节省从datetime->unix时间戳->datetime的多余往返时间。

使用strtotime()函数是个坏主意,因为它并不总是能很好地工作。

与其用PHP做日期,我建议你直接用MySQL做,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的哪一部分执行?