При освобождаване на израза, връщаната стойност на 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)
За да почистите сесия, дори не е необходимо да преглеждате подготвените изрази и да ги освобождавате един по един, можете да извикате DEALLOCATE ALL
вместо това все още с pg_query
.
Има и друг израз, който извършва повече почистване в една заявка:DISCARD ALL
Освен това нищо от това дори не е необходимо, ако скриптът наистина прекъсне връзката с postgres, тъй като подготвените изрази са локални за тяхната родителска сесия и умират с нея.
Изричното почистване е необходимо, когато се използва повторно използване на връзка между скриптове, или с постоянни връзки от PHP (pg_pconnect
), или пул за свързване като pgBouncer
(въпреки че самият пулър може да извика DISCARD ALL
в зависимост от конфигурацията му).