Khi định vị câu lệnh, giá trị trả về của pg_query
cho biết thành công hay không, giống như bất kỳ "câu lệnh tiện ích" nào. Khi thất bại, nó sẽ trả về false. Ví dụ:
if (!pg_query($cnx, "deallocate foobar")) {
echo "Error deallocate: " . pg_last_error($cnx);
}
else {
echo "deallocate successful";
}
Điều này hiển thị:
Lưu ý rằng tên câu lệnh để deallocate không được bao quanh bởi các dấu ngoặc kép, bởi vì nó là một mã định danh, không phải là một chuỗi ký tự. Nếu nó cần được bao quanh vì các ký tự có vấn đề, nó có thể được thực hiện với pg_escape_identifier
(php>
=5.4.4)
Để dọn dẹp một phiên, thậm chí không cần phải lặp lại các câu lệnh đã chuẩn bị và phân bổ chúng từng câu một, bạn có thể gọi DEALLOCATE ALL
thay vào đó, vẫn với pg_query
.
Cũng có một câu lệnh khác thực hiện nhiều thao tác dọn dẹp hơn trong một truy vấn: DISCARD ALL
Ngoài ra, điều này thậm chí không cần thiết nếu tập lệnh thực sự ngắt kết nối với các postgres, vì các câu lệnh đã chuẩn bị là cục bộ cho phiên mẹ của chúng và chết với nó.
Việc dọn dẹp rõ ràng là cần thiết khi sử dụng tái sử dụng kết nối giữa các tập lệnh, hoặc với các kết nối liên tục bằng PHP (pg_pconnect
) hoặc một trình gộp kết nối như pgBouncer
(mặc dù bản thân trình tổng hợp có thể gọi DISCARD ALL
tùy thuộc vào cấu hình của nó).