SunshinePHP Developer Conference 2015

pg_get_result

(PHP 4 >= 4.2.0, PHP 5)

pg_get_result Gibt asynchrone Abfrageergebnisse zurück

Beschreibung

resource pg_get_result ([ resource $connection ] )

pg_get_result() gibt die Ergebniskennung einer asynchronen Abfrage zurück, die mit pg_send_query(), pg_send_query_params() oder pg_send_execute() an den Datenbankserver gesendet wurde.

Mit pg_send_query() und auch den anderen asynchronen Abfragefunktionen können mehrere Abfragen an den Server geschickt werden. Deren Ergebnisse können mit pg_get_result() nacheinander abgefragt werden.

Parameter-Liste

connection

PostgreSQL Verbindungskennung.

Rückgabewerte

Die Ergebniskennung als resource or FALSE, falls es keine Ergebnisse gibt.

Beispiele

Beispiel #1 pg_get_result() Beispiel

<?php
  $dbconn 
pg_connect("dbname=publisher") or die("Verbindungsaufbau fehlgeschlagen");

  if (!
pg_connection_busy($dbconn)) {
      
pg_send_query($dbconn"select * from authors; select count(*) from authors;");
  }
  
  
$res1 pg_get_result($dbconn);
  echo 
"Der erste Aufruf von pg_get_result(): $res1\n";
  
$rows1 pg_num_rows($res1);
  echo 
"$res1 hat $rows1 Zeilen\n\n";
  
  
$res2 pg_get_result($dbconn);
  echo 
"Der zweite Aufruf von pg_get_result(): $res2\n";
  
$rows2 pg_num_rows($res2);
  echo 
"$res2 hat $rows2 Zeilen\n";
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Der erste Aufruf von pg_get_result(): Resource id #3
Resource id #3 hat 3 Zeilen

Der zweite Aufruf von pg_get_result(): Resource id #4
Resource id #4 hat 1 Zeilen

Siehe auch

add a note add a note

User Contributed Notes 3 notes

up
1
william at 25thandClement dot com
9 years ago
There is no way to poll/wait for a notification to come in. You either have to enter a busy loop or sleep. Both options are horrible. It would be nice for PHP to provide access to PQsocket so one could select() on the socket connection. This is how it's done from C or Perl.
up
-1
gullevek at gullevek dot org
1 year ago
To have a a simple wait output with async queries you can use the pg_connection_busy command:

<?php
$dbh
= pg_connect("host=XXX user=XXX password=XXX dbname=XXX");
if (!
$dbh)
{
    print
"Failed to connect";
    exit;
}

$query = "SELECT pg_sleep(10)";
if (!
pg_connection_busy($dbh))
{
   
$sent = pg_send_query($dbh, $query);
    print
"Sent query, waiting: ";
    while (
pg_connection_busy($dbh)
    {
        print
".";
       
flush();
    }
   
$res = pg_get_result($dbh);
    print
"<br>"; // or \n
   
print "Result is: $res";
}

pg_close($dbh);
?>
up
-1
Marko Tiikkaja
5 years ago
william at 25thandClement dot com said: "There is no way to poll/wait for a notification to come in. .."
Yes, there is. If there is a query in progress, pg_get_result() will block and return the result of that query when it's complete.
To Top