MySQL查询中带日期的变量

时间:2014-11-04 21:41:59

标签: php mysql

我想添加带日期的变量,以便在某些日子添加到我的日期。 但似乎根本不起作用。

$userVal='2014-11-06 20:52:05'; 
mysql_query("UPDATE users SET validity = DATE_ADD($userVal, INTERVAL $someDays DAY) WHERE id = $id");

3 个答案:

答案 0 :(得分:1)

你有这个问题吗?

UPDATE users
    SET validity = DATE_ADD(NOW(), INTERVAL $someDays DAY)
    WHERE id = $id;

您真的不需要传递当前日期/时间。您应该使用参数化查询和mysqli或PDO,但这些是其他事项。

答案 1 :(得分:0)

如果您需要将其设置为特定时间,可以使用PHP进行日期添加:

$someDays = 2;
$userVal='2014-11-06 20:52:05'; 

$newUserVal = date("Y-m-d H:i:s", strtotime('+ '.$someDays.' days', strtotime($userVal)));

mysql_query("UPDATE users SET validity = '$newUserVal' WHERE id = $id");

或者,如果您需要更新现有的validity值:

mysql_query("UPDATE users SET validity = DATE_ADD(validity, INTERVAL $someDays DAY) WHERE id = $id");

答案 2 :(得分:0)

可以有很好的理由不使用NOW()。使用NOW()的查询结果永远不会被mysql缓存,因为NOW()始终是不同的。

如果您要调试查询,并将其打印到屏幕上,则可以看到您的查询问题:

$query = "UPDATE users SET validity = DATE_ADD($userVal, INTERVAL $someDays DAY) WHERE id = $id";
die($query);

将显示哪个,例如:

UPDATE users SET validity = DATE_ADD(2014-11-06 20:52:05, INTERVAL 1 DAY) WHERE id = 123

问题是您插入的日期属于引号之间,因此请将其更改为:

$query = "UPDATE users SET validity = DATE_ADD('$userVal', INTERVAL $someDays DAY) WHERE id = $id";

请注意,这些人对SQL注入是正确的。