insert ...在postgresql中选择语句,将来自php的插入值与select语句结合起来

时间:2015-01-27 01:54:37

标签: php postgresql

我已经看到一些关于如何插入所选值的SO帖子,但它们总是在所有插入值都来自select语句的情况下。我正在努力插入部分由php调用提供的数据,部分由select语句提供。这就是我想做的事情:

$query = "INSERT INTO deals (latitude, longitude, interested, id, the_geom) VALUES ($1, $2, $3, $4, SELECT the_geom FROM userlocs WHERE id=$3)";
$rs = pg_query_params($con, $query, array($latitudeS, $longitudeS, $id_pg , $id_add));

这给了我以下不太有用的错误:

 pg_query_params(): Query failed: ERROR: syntax error at or near "SELECT" LINE 1: ...interested, id, the_geom) VALUES ($1, $2, $3, $4, SELECT the... ^ in /var/www/html/join.php on line 30

有可能做我想做的事吗?如果是这样,我该如何修改语法?

非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

最简单的解决方法可能是将SELECT语句放在括号中

INSERT INTO deals (latitude, longitude, interested, id, the_geom) 
VALUES ($1, $2, $3, $4, (SELECT the_geom FROM userlocs WHERE id = $3))

这是 SQLFiddle 演示

根据您是否总是期望来自userlocs的值,您也可以使用INSERT ... SELECT语法中的一种

INSERT INTO deals (latitude, longitude, interested, id, the_geom) 
SELECT $1, $2, $3, $4, the_geom FROM userlocs WHERE id = $3

INSERT INTO deals (latitude, longitude, interested, id, the_geom) 
SELECT $1, $2, $3, $4, (SELECT the_geom FROM userlocs WHERE id = $3)