我想添加带日期的变量,以便在某些日子添加到我的日期。 但似乎根本不起作用。
$userVal='2014-11-06 20:52:05';
mysql_query("UPDATE users SET validity = DATE_ADD($userVal, INTERVAL $someDays DAY) WHERE id = $id");
答案 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注入是正确的。