我已经看到一些关于如何插入所选值的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
有可能做我想做的事吗?如果是这样,我该如何修改语法?
非常感谢任何建议。
答案 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)