Php PostgreSQL准备语句不与plsql if语句一起使用
好的,我这里有一个pgsql查询和一个plsql if语句:Php PostgreSQL准备语句不与plsql if语句一起使用,php,postgresql,if-statement,prepared-statement,plpgsql,Php,Postgresql,If Statement,Prepared Statement,Plpgsql,好的,我这里有一个pgsql查询和一个plsql if语句: DO $do$ BEGIN IF $1 & (SELECT group_flags FROM technic WHERE id = $2 LIMIT 1) > 0 THEN UPDATE technic SET group_flags = group_flags - $1 WHERE id = $2; END IF; END $do$ 我正在用pg_prepare()PHP函数准备它,然后执行它。 问题是pgsq
DO
$do$
BEGIN
IF $1 & (SELECT group_flags FROM technic WHERE id = $2 LIMIT 1) > 0 THEN
UPDATE technic SET group_flags = group_flags - $1 WHERE id = $2;
END IF;
END
$do$
我正在用pg_prepare()PHP函数准备它,然后执行它。
问题是pgsql返回此错误-
Warning: pg_execute(): Query failed: ERROR: bind message supplies 2 parameters, but prepared statement "query1990094225" requires 0
但我在查询中有两个参数
为了确保语法没有问题,我用整数替换了参数,一切都按预期进行
我不明白问题出在哪里
提前谢谢 您不能对参数使用
DO
语句,但幸运的是您不必:
UPDATE technic
SET group_flags = group_flags - $1
WHERE id = $2
AND (SELECT group_flags
FROM technic
WHERE id = $2
LIMIT 1
) > 0
匿名代码块不接受参数。谢谢,这个答案在技术上与原始代码不一样(进行了编辑但被拒绝了…),但是我现在修复了我的代码,一切都很好。我真是太蠢了,我拒绝了更新,因为你的简单语句与问题中的
DO
语句不相等。但如果这是你真正需要的陈述,那么使用它会更好。