sql >> Database teknologi >  >> RDS >> PostgreSQL

Deallokering af forberedte forespørgsler

Når sætningen deallokeres, returneres værdien af ​​pg_query indikerer succes eller ej, som for enhver "utility statement". Ved fejl skal den returnere falsk. For eksempel:

 if (!pg_query($cnx, "deallocate foobar")) {
   echo "Error deallocate: " . pg_last_error($cnx);
 }
 else {
  echo "deallocate successful";
 }

Dette viser:

Bemærk, at sætningsnavnet, der skal deallokeres, ikke må være omgivet af enkelte anførselstegn, fordi det er en identifikator, ikke en streng. Skulle det være nødvendigt at vedlægge det på grund af problematiske tegn, kan det gøres med pg_escape_identifier (php> =5.4.4)

For at rydde op i en session er det ikke engang nødvendigt at gentage de forberedte erklæringer og deallokere dem én efter én. Du kan ringe til AFTIL ALLE i stedet stadig med pg_query .

Der er også en anden erklæring, der gør mere oprydning i én forespørgsel: KASSER ALLE

Intet af dette er heller nødvendigt, hvis scriptet virkelig afbryder forbindelsen fra postgres, da forberedte udsagn er lokale for deres forældresession og dør med det.

Den eksplicitte oprydning er nødvendig, når du bruger forbindelsesgenbrug mellem scripts, enten med vedvarende forbindelser med PHP (pg_pconnect ), eller en forbindelsespooler som pgBouncer (selvom pooleren selv kan kalde KASSER ALLE afhængigt af dens konfiguration).



  1. varchar(max) overalt?

  2. Java-hent ResultSet fra SQL Array mislykkes

  3. Der opstod en fejl under installationen af ​​pg (0.17.1), og Bundler kan ikke fortsætte

  4. Laravel rækkefølge resultater efter kolonne på polymorf tabel