ステートメントの割り当てを解除するとき、pg_query
の戻り値 他の「ユーティリティステートメント」と同様に、成功したかどうかを示します。失敗するとfalseを返すはずです。例:
if (!pg_query($cnx, "deallocate foobar")) {
echo "Error deallocate: " . pg_last_error($cnx);
}
else {
echo "deallocate successful";
}
これは次のように表示されます:
割り当てを解除するステートメント名は、文字列リテラルではなく識別子であるため、一重引用符で囲まないでください。問題のある文字のために囲む必要がある場合は、 pg_escape_identifier
(php>
=5.4.4)
セッションをクリーンアップするために、準備されたステートメントを繰り返し処理して1つずつ割り当てを解除する必要はありません。DEALLOCATE ALL
代わりに、pg_query
を使用します 。
1つのクエリでさらにクリーンアップを行う別のステートメントもあります: DISCARD ALL
また、プリペアドステートメントは親セッションに対してローカルであり、スクリプトで終了するため、スクリプトが実際にpostgresから切断された場合でも、これは必要ありません。
PHPによる持続的接続(pg_pconnect
)を使用して、スクリプト間で接続の再利用を使用する場合は、明示的なクリーンアップが必要です。 )、またはpgBouncer
のような接続プール (ただし、プーラー自体がDISCARD ALL
を呼び出す場合があります。 構成によって異なります)。