PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Zum Verständnis von Abfragen in PHP PG -vorbereitete Anweisungen

Ihr gepostetes Beispiel ergibt keinen Sinn - pg_prepare() und pg_query_params() sind unabhängige Funktionen mit unterschiedlichen Zwecken, die Sie normalerweise nicht zusammen verwenden würden.

pg_prepare() bereitet eine Anweisung (eine Abfrage) für die spätere Ausführung über pg_execute() vor . Dies geschieht als potenzielle Optimierung – wenn Sie im Voraus wissen, dass Sie die Anweisung viele Male hintereinander ausführen müssen, kann die Vorbereitung im Voraus etwas Arbeit auf dem Datenbankserver sparen, da er sich nicht (neu) vorbereiten muss die Anweisung für jeden Anruf.

pg_query_params() (sowie seine 'einfachere' Version pg_query() ) führt die Anweisung (Abfrage) einfach direkt aus und zwingt den Datenbankserver, die Anweisung bei jedem Aufruf der Funktion (neu) vorzubereiten.

Also kurz gesagt, das

$result = pg_query_params($query, $params);

wird Ihnen genau das gleiche Ergebnis wie dieses geben

$statement = pg_prepare($query);
$result = pg_execute($statement, $params);

Der einzige Unterschied besteht darin, dass Sie im zweiten Fall immer noch die vorbereitete Anweisung haben, die Sie für weitere Aufrufe von pg_execute() wiederverwenden können - deshalb können Sie ihm einen Namen geben, da Sie auf diese Weise verschiedene vorbereitete Anweisungen auf derselben Verbindung haben können, die Sie beliebig oft und in beliebiger Reihenfolge ausführen können.