Saat membatalkan alokasi pernyataan, nilai kembalian pg_query
menunjukkan keberhasilan atau tidak, seperti untuk "pernyataan utilitas" apa pun. Pada kegagalan itu harus mengembalikan false. Misalnya:
if (!pg_query($cnx, "deallocate foobar")) {
echo "Error deallocate: " . pg_last_error($cnx);
}
else {
echo "deallocate successful";
}
Ini menampilkan:
Perhatikan bahwa nama pernyataan yang akan dideallocate tidak boleh diapit oleh tanda kutip tunggal, karena ini adalah pengenal, bukan literal string. Jika perlu ditutup karena karakter yang bermasalah, dapat dilakukan dengan pg_escape_identifier
(php>
=5.4.4)
Untuk membersihkan sesi, bahkan tidak perlu mengulangi pernyataan yang telah disiapkan dan membatalkan alokasinya satu per satu, Anda dapat menghubungi DEALLOCATE ALL
sebagai gantinya, masih dengan pg_query
.
Ada juga pernyataan lain yang melakukan lebih banyak pembersihan dalam satu kueri:DISCARD ALL
Juga, semua ini bahkan tidak diperlukan jika skrip benar-benar terputus dari postgres, karena pernyataan yang disiapkan bersifat lokal untuk sesi induknya dan mati bersamanya.
Pembersihan eksplisit diperlukan saat menggunakan penggunaan kembali koneksi antar skrip, baik dengan koneksi persisten oleh PHP (pg_pconnect
), atau penyambung koneksi seperti pgBouncer
(walaupun pooler itu sendiri mungkin memanggil DISCARD ALL
tergantung pada konfigurasinya).