sql >> Database >  >> RDS >> PostgreSQL

Toewijzing van voorbereide query's ongedaan maken

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).



  1. tijdzone-afstemming met SQL

  2. Hoe CURDATE() werkt in MariaDB

  3. MS SQL ping externe server

  4. Een weergave gebruiken zonder primaire sleutel met Entiteit