更新数据库查询

时间:2013-08-06 13:01:04

标签: php

我想要实现的是,如果已经付款,则为客户订阅添加30天

所以我正在使用此代码

$set = "REPLACE into CLIENTS where USR_PAID = '1' and USR_EXPIRATION = DATE(DATE_ADD(NOW(), INTERVAL 0 DAY)) values ('USR_EXPIRATION','" . $due . "')";
$update = $conn->update($set, $db);

我收到以下语法错误

  

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在第1行的“USR_PAID ='1'和USR_EXPIRATION = DATE(DATE_ADD(NOW(),INTERVAL 0 DAY))'附近使用正确的语法       声明:       更换为客户,其中USR_PAID ='1'且USR_EXPIRATION = DATE(DATE_ADD(NOW(),INTERVAL 0 DAY))值('USR_EXPIRATION','09 -05-2013')

我应该告诉你,我正在使用相同的功能在网站的不同部分更新数据库,并且工作正常。

此外,以下查询正在运行,并为我提供了今天已付款并已过期的所有客户:

$request = "select * from CLIENTS where USR_PAID = '1' and USR_EXPIRATION = DATE(DATE_ADD(NOW(), INTERVAL 0 DAY))";
$result = $conn->query($request, G_NORMDB);

我想这只是一个我无法弄清楚的语法错误。

3 个答案:

答案 0 :(得分:1)

您的REPLACE语法错误。价值观,然后在哪里。

$set = "REPLACE into CLIENTS (the two columns here) VALUES ('USR_EXPIRATION','" . $due . "') where USR_PAID = '1' and USR_EXPIRATION = DATE(DATE_ADD(NOW(), INTERVAL 0 DAY))";

有关详细信息,请参阅enter link description here了解更多信息。

编辑:我很好奇没有在文档中看到WHERE。根据{{​​3}},REPLACE没有WHERE子句。请改用UPDATE。

答案 1 :(得分:1)

在旁注中,我认为无论如何这都行不通,您无法使用replace into来有选择地更改列。

以下是手册的解释:

  

所有列的值都取自中指定的值   REPLACE声明。任何缺少的列都设置为默认值   值,就像INSERT一样。你不能引用来自的值   当前行并在新行中使用它们。

所以你冥想包括整个用户行。

我认为使用此查询更容易:

$ q =“UPDATE CLIENTS SET USR_EXPIRATION ='$ due'WHERE`USR_PAID ='1'和USR_EXPIRATION = DATE(DATE_ADD(NOW(),INTERVAL 0 DAY))”; $ update = $ conn-> update($ q,$ db);

让我知道这对你有什么用,如果有的话。

答案 2 :(得分:-1)

如何遵循错误消息中的建议 - 检查有关REPLACE query?的语法的Mysql手册

相关问题