5.5.16

pg_get_result

(PHP 4 >= 4.2.0, PHP 5)

pg_get_result Pobiera wynik zapytania asynchroniczego

Opis

resource pg_get_result ([ resource $polaczenie ] )

pg_get_result() zwraca wynik zapytania asynchronicznego uruchomionego przez pg_send_query(), pg_send_query_params() lub pg_send_execute().

pg_send_query() oraz inne funkcje zapytań asynchronicznych może wysyłać wiele zapytań do serwera PostgreSQL, natomiast pg_get_result() jest używana do pobierania wyników każdego zapytania po kolei.

Parametry

polaczenie

Identyfikator połączenia z bazą PostgreSQL.

Zwracane wartości

Identyfikator wyniku (ang. resource), lub FALSE gdy brak więcej dostępnych wyników.

Przykłady

Przykład #1 pg_get_result() - przykład

<?php
  $polaczenie 
pg_connect("dbname=wydawca") or die("Nie można się połączyć");

  if (!
pg_connection_busy($polaczenie)) {
      
pg_send_query($polaczenie"select * from autorzy; select count(*) from autorzy;");
  }
  
  
$wyn1 pg_get_result($polaczenie);
  echo 
"Pierwsze wywołanie pg_get_result(): $wyn1\n";
  
$wiersze1 pg_num_rows($wyn1);
  echo 
"$wyn1 ma $wiersze1 rekordy(ów)\n\n";
  
  
$wyn2 pg_get_result($polaczenie);
  echo 
"Drugie wywołanie pg_get_result(): $wyn2\n";
  
$wiersze2 pg_num_rows($wyn2);
  echo 
"$wyn2 ma $wiersze2 rekordy(ów)\n";
?>

Powyższy przykład wyświetli:

Pierwsze wywołanie pg_get_result(): Resource id #3
Resource id #3 ma 3 rekordy(ów)

Drugie wywołanie pg_get_result(): Resource id #4
Resource id #4 ma 1 rekordy(ów)

Zobacz też:

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
10 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