När satsen avallokeras, returnerar värdet för pg_query
indikerar framgång eller inte, som för alla "nyttoförklaringar". Vid misslyckande bör den returnera falskt. Till exempel:
if (!pg_query($cnx, "deallocate foobar")) {
echo "Error deallocate: " . pg_last_error($cnx);
}
else {
echo "deallocate successful";
}
Detta visar:
Observera att satsnamnet som ska deallokeras inte får omges av enkla citattecken, eftersom det är en identifierare, inte en bokstavlig sträng. Om det skulle behöva bifogas på grund av problematiska tecken, kan det göras med pg_escape_identifier
(php>
=5.4.4)
För att rensa upp en session är det inte ens nödvändigt att upprepa de förberedda uttalandena och deallokera dem en efter en, du kan ringa AVTALA ALLA
istället, fortfarande med pg_query
.
Det finns också ett annat uttalande som städar mer i en fråga: KASSA ALLA
Dessutom är inget av detta ens nödvändigt om skriptet verkligen kopplar bort från postgres, eftersom förberedda uttalanden är lokala för deras föräldersession och dör med det.
Den explicita rensningen är nödvändig när du använder anslutningsåteranvändning mellan skript, antingen med beständiga anslutningar med PHP (pg_pconnect
), eller en anslutningspoolare som pgBouncer
(även om poolaren själv kan anropa KASSA ALLA
beroende på dess konfiguration).