pg_get_result

(PHP 4 >= 4.2.0, PHP 5)

pg_get_result Lit un résultat PostgreSQL asynchrone

Description

resource pg_get_result ([ resource $connection ] )

pg_get_result() lit la ressource de résultat d'une requête asynchrone exécutée par pg_send_query(), pg_send_query_params() ou pg_send_execute().

pg_send_query() et les autres fonctions de requête asynchrone peuvent envoyer plusieurs requêtes à un serveur PostgreSQL et pg_get_result() est utilisé pour obtenir chaque résultat de requête, un par un.

Liste de paramètres

connection

Ressource de connexion de base de données PostgreSQL.

Valeurs de retour

La resource de résultat ou FALSE s'il n'y a plus de résultat disponible.

Exemples

Exemple #1 Exemple avec pg_get_result()

<?php
  $dbconn 
pg_connect("dbname=publisher") or die("Connexion impossible");

  if (!
pg_connection_busy($dbconn)) {
      
pg_send_query($dbconn"select * from auteurs; select count(*) from auteurs;");
  }
  
  
$res1 pg_get_result($dbconn);
  echo 
"Premier appel à pg_get_result(): $res1\n";
  
$rows1 pg_num_rows($res1);
  echo 
"$res1 a $rows1 enregistrements\n\n";
  
  
$res2 pg_get_result($dbconn);
  echo 
"Second appel à pg_get_result(): $res2\n";
  
$rows2 pg_num_rows($res2);
  echo 
"$res2 a $rows2 enregistrements\n";
?>

L'exemple ci-dessus va afficher :

Premier appel à pg_get_result(): Resource id #3
Resource id #3 a 3 enregistrements

Second appel à pg_get_result(): Resource id #4
Resource id #4 a 1 enregistrements

Voir aussi

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
6 months 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