2012-07-05 67 views
3

我试图用DateTime变量更新我的MySQL数据库。更新mysql中的日期时间变量

$interval = 'P' . $days . 'DT' . $hours. 'H' . $minutes. 'M' . $seconds . 'S' ; 
$date = new DateTime("NOW"); 
$date->add(new DateInterval($interval)); 

现在SQL更新:

$query = "UPDATE table 
SET table.table_date = '$date' "; 
mysql_query($query); 
mysql_query($query); 

如果我var_dump$date变量,它显示了正确的属性:

object(DateTime)#4 (3) { ["date"]=> string(19) "2012-07-05 20:04:14" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Berlin" } 

,但它只是不会被插入。如果我尝试NOW()而不是$ date,它完美地工作。我的错误是什么?

+2

您应该使用PDO或库MySQLi而不是'mysql_'扩展,其使用劝阻并可能会被从PHP很快删除。使用准备好的语句也应该解决这个问题。 – Ryan 2012-07-05 18:13:24

+0

,为什么不使用NOW(),因为它的工作原理? – Gntem 2012-07-05 18:16:33

+1

,因为日期应该是用户指定的,而不是现在。 – villeroy 2012-07-05 18:17:23

回答

3

试试这个:

"UPDATE table SET table.table_date = '{$date->format('Y-m-d H:i:s')}'" 
+0

它工作完美,谢谢。 – villeroy 2012-07-05 18:23:36

2

它不工作,因为你正在试图直接将对象插入一个字符串。你需要做的是将对象转换成可用的时间字符串第一:

$futuredate = $date->format('Y-m-d H:i:s'); 
$query = "UPDATE table SET table.table_date = '$futuredate'";