PHP:使用绑定参数创建并运行PostGres Procedure(BEGIN ... END)

时间:2018-12-17 08:56:37

标签: php postgresql

我在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));

我认为我不能以这种方式使用绑定参数...因此,请建议这样做的最佳方法...

1 个答案:

答案 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;