Questa affermazione non funziona con PostgreSQL 8.2.4 e PHP 5.2.17:
pg_query_params('SELECT $1', array(1));
ERROR: could not determine data type of parameter $1
Mi sembra giusto. Questa è una possibile soluzione:
pg_query_params('SELECT CAST($1 AS INTEGER)', array(1));
Questo ha senso poiché siamo espliciti sul tipo di dati.
Ma la seguente dichiarazione funziona anche, anche se dovrebbe essere equivalente alla prima espressione:
pg_query_params('SELECT COALESCE($1)', array(1));
Perché? COALESCE
in qualche modo modifica il tipo di dati di $ 1 o garantisce un semplice tipo di dati come risultato?
Modifica: The docs sono piuttosto brevi in tema di.
assumably , sì. Vorrei [controllare i documenti di quella funzione] (http://www.postgresql.org/docs/9.0/interactive/functions-conditional.html#AEN15541). Dovrebbe specificare il valore di ritorno, ma non chiedermi una spiegazione :) – hakre