我在PHP中使用Postgres,我有两个相关的查询,如下所示:
INSERT INTO tab2
SELECT * FROM tab1 WHERE col1 = $1 AND col2 IS NOT NULL;
DELETE FROM tab1 WHERE col1 = $1 AND col2 IS NOT NULL ;
我希望它们都运行,或者都不运行。所以我创建了以下代码块:
DO $$
BEGIN
INSERT INTO tab2
SELECT * FROM tab1 WHERE col1 = $1 AND col2 IS NOT NULL ;
DELETE FROM tab1 WHERE col1 = $1 AND col2 IS NOT NULL ;
END$$
但这无法正常工作,并出现以下错误:
错误:绑定消息提供1个参数,但准备好的语句“”需要0
PHP代码:
$result = pg_query_params($pg_con_write,$query_PG,array($Param1));
我认为我不能以这种方式使用绑定参数...因此,请建议这样做的最佳方法...
答案 0 :(得分:1)
我认为是$$的问题,您应该像这样重写查询
BEGIN;
INSERT INTO tab2
SELECT * FROM tab1 WHERE col1 = $1 AND col2 IS NOT NULL;
DELETE FROM tab1 WHERE col1 = $1 AND col2 IS NOT NULL;
COMMIT;