這種說法不符合的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