Esta declaración no funciona con PostgreSQL 8.2.4 y PHP 5.2.17:
pg_query_params('SELECT $1', array(1));
ERROR: could not determine data type of parameter $1
Justo lo suficiente. Esta es una solución posible:
pg_query_params('SELECT CAST($1 AS INTEGER)', array(1));
Eso tiene sentido ya que estamos siendo explícitos sobre el tipo de datos.
Pero la siguiente declaración también trabaja, aunque debería ser equivalente a la primera expresión:
pg_query_params('SELECT COALESCE($1)', array(1));
¿Por qué? ¿De alguna manera, el COALESCE
modifica el tipo de datos de $ 1 o garantiza algún tipo de datos simples como resultado?
Editar: The docs son más bien breves sobre el tema COALESCE
.
assumably Sí, Yo [verificaría los documentos de esa función] (http://www.postgresql.org/docs/9.0/interactive/functions-conditional.html#AEN15541). Debe especificar el valor de retorno, pero no me pida una explicación :) – hakre