PHP无法在Postgres数据库中增加价值

时间:2014-07-21 23:09:05

标签: php sql postgresql

我可以用一些帮助来理解奇怪的情况。我有一个postgres数据库'服务器'与ip(inet)和加载(整数)列。我可以通过psql手动更新加载值,如下所示:

UPDATE servers 
    SET load = load + 100 
WHERE ip = '10.10.10.10';

我编写了一个php脚本来自动加载更新。但是,'value = value + x'语法现在对我不起作用。

这项工作:

pg_query($conn, "UPDATE servers SET load = 100 WHERE ip = '10.10.10.10'");

这不是:

pg_query($conn, "UPDATE servers SET load = load + 100 WHERE ip = '10.10.10.10'");

使用后者时,脚本会无限期挂起而不会给出响应。我尝试过各种变体,例如在最后添加or die(pg_last_error())子句。我还尝试使用pg_preparepg_execute语句。仍然没有输出,也没有对数据库进行任何更改。

我错过了什么吗?有没有一种简单的方法来解决这个问题(我宁愿不使用单独的查询来获取负载,以便我可以将其添加回来)。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我不确定为什么这是一个问题,但事实证明,无论如何最佳实践最终帮助解决了这个问题。

我没有运行单个pg_query,而是设置了适当的变量并使用了pg_query_params。无论问题如何,这都是一个好主意。

$myQuery = "UPDATE servers SET load = load + $1 WHERE ip = '$2'";
$serverIP = '10.10.10.10';
$loadAdded = '1234';
$result = pg_query_params($conn, $myQuery, array($loadAdded, $serverIP));

同样,我不知道为什么这会为我解决这个问题,但确实如此。