这种说法不符合的PostgreSQL 8.2.4和5.2.17 PHP工作:
pg_query_params('SELECT $1', array(1));
ERROR: could not determine data type of parameter $1
很公平。这是一个可能的修复:
pg_query_params('SELECT CAST($1 AS INTEGER)', array(1));
这是有道理的,因为我们正在明确数据类型。
但下面的语句也适用,尽管它应该是等同于第一个表达式:
pg_query_params('SELECT COALESCE($1)', array(1));
为什么? COALESCE
以某种方式修改$ 1的数据类型,或者保证一些简单的数据类型作为结果?
编辑:The docs关于COALESCE
的主题相当短。
Assumably ,是的。我会[检查该功能的文档](http://www.postgresql.org/docs/9.0/interactive/functions-conditional.html#AEN15541)。它应该指定返回值 - 但不要问我的解释:) – hakre