7

このステートメントは、PostgreSQL 8.2.4 および PHP 5.2.17 では機能しません。

 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));

なんで?$1 のデータ型をどうにかして変更しますかCOALESCE、それとも単純なデータ型を結果として保証しますか?

編集ドキュメントは、の件名ではかなり短いですCOALESCE

4

1 に答える 1

2

coalesce常に最初の非 null 文字列を 返し
ます。null$1
NULL

NULLundefined とまったく同じではありません

私の悪い説明を許してください...

最初の例では、エラーにつながる未定義の変数を返そうとしています。

ただし、3 番目の例では、NULL 値 (coalesce によって返される) を返そうとしています
。未定義の変数はなくなり、NULL が返されるだけです。これにより、select が正常に機能します。

于 2011-08-24T09:38:58.373 に答える