Wanneer de toewijzing van de instructie ongedaan wordt gemaakt, wordt de geretourneerde waarde van pg_query
geeft succes aan of niet, zoals voor elke "utility statement". Bij falen zou het false moeten retourneren. Bijvoorbeeld:
if (!pg_query($cnx, "deallocate foobar")) {
echo "Error deallocate: " . pg_last_error($cnx);
}
else {
echo "deallocate successful";
}
Dit toont:
Houd er rekening mee dat de naam van de instructie waarvan de toewijzing ongedaan moet worden gemaakt, niet tussen enkele aanhalingstekens mag staan, omdat het een identifier is en geen letterlijke tekenreeks. Als het moet worden ingesloten vanwege problematische tekens, kan dit worden gedaan met pg_escape_identifier
(php>
=5.4.4)
Om een sessie op te schonen, is het niet eens nodig om de voorbereide verklaringen te herhalen en ze een voor een te verwijderen, je kunt DEALLOCATE ALL
in plaats daarvan, nog steeds met pg_query
.
Er is ook een andere verklaring die meer opruimt in één zoekopdracht:DISCARD ALL
Dit alles is ook niet nodig als het script echt de verbinding met postgres verbreekt, aangezien voorbereide verklaringen lokaal zijn voor hun oudersessie en ermee sterven.
De expliciete opschoning is nodig bij gebruik van hergebruik van verbindingen tussen scripts, ofwel met permanente verbindingen door PHP (pg_pconnect
), of een verbindingspooler zoals pgBouncer
(hoewel de pooler zelf DISCARD ALL
mag noemen afhankelijk van de configuratie).