mysql查询中的变量,NOW()+ INTERVAL $变量

时间:2014-11-04 19:22:51

标签: php mysql

$日子她念叨= 2;

如何将此变量放入此mysql查询中?

这些不起作用:

mysql_query("UPDATE users (validity) VALUES (NOW() + INTERVAL '$someDays' DAY) WHERE id='$id'");
mysql_query("UPDATE users (validity) VALUES (NOW() + INTERVAL $someDays DAY) WHERE id='$id'");
mysql_query("UPDATE users (validity) VALUES (NOW() + INTERVAL '".$someDays."' DAY) WHERE id='$id'");
mysql_query("UPDATE users (validity) VALUES (NOW() + INTERVAL ".$someDays." DAY) WHERE id='$id'");

3 个答案:

答案 0 :(得分:3)

最可读的方法就是这样 -

"UPDATE `users` SET `validity` = DATE_ADD(NOW(), INTERVAL '".$someDays."' DAY) WHERE `id`='".$id."' "

您尝试使用INSERT语法而不是UPDATE语法。此外,如果您要在查询中以某种方式使用变量,则应对查询中的所有变量执行此操作,以保持一致性和可读性。

don't use mysql_* functions,不再维护它们officially deprecated。请改为了解prepared statements,并使用PDOMySQLiThis article会帮助您做出决定。

答案 1 :(得分:2)

根据您使用INSERT语法但尝试执行UPDATE的评论。以下内容应该有效:

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

编辑:

要将$someDays天添加到您可以执行的现有validity

… SET validity = DATE_ADD(validity, INTERVAL $someDays DAY) …

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

$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");

答案 2 :(得分:0)

尝试使用此日期在当前日期添加天数。您不能同时执行两项操作,因此请尝试更新或尝试插入。

mysql_query("insert into  users (validity) VALUES (select DATE_ADD(NOW(), INTERVAL ".$someDays." DAY) );