PHP.mk документација

pg_get_result

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.pg-get-result.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.pg-get-result.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
pg_get_result

Референца за `function.pg-get-result.php` со подобрена типографија и навигација.

function.pg-get-result.php

pg_get_result

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_get_result Добијте резултат од асинхронизирано барање

= NULL

pg_get_result(PgSql\Connection $connection): PgSql\Result|false

pg_get_result() добива PgSql\Result инстанца од асинхронизирано барање извршено од pg_send_query(), pg_send_query_params() or pg_send_execute().

pg_send_query() и другите функции за асинхронизирано барање можат да испратат повеќе барања до PostgreSQL сервер и pg_get_result() се користи за добивање на резултатите од секое барање, едно по едно.

Параметри

connection

Еден PgSql\Connection instance.

Вратени вредности

Еден PgSql\Result инстанца, или false ако нема повеќе достапни резултати.

Дневник на промени

Верзија = NULL
8.1.0 Враќа PgSql\Result инстанца сега; претходно, а resource .
8.1.0 На connection параметарот очекува PgSql\Connection инстанца сега; претходно, а resource се очекуваше.

Примери

Пример #1 pg_get_result() example

<?php
$dbconn
= pg_connect("dbname=publisher") or die("Could not connect");

if (!
pg_connection_busy($dbconn)) {
pg_send_query($dbconn, "select * from authors; select count(*) from authors;");
}

$res1 = pg_get_result($dbconn);
echo
"First call to pg_get_result(): $res1\n";
$rows1 = pg_num_rows($res1);
echo
"$res1 has $rows1 records\n\n";

$res2 = pg_get_result($dbconn);
echo
"Second call to pg_get_result(): $res2\n";
$rows2 = pg_num_rows($res2);
echo
"$res2 has $rows2 records\n";
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

First call to pg_get_result(): Resource id #3
Resource id #3 has 3 records

Second call to pg_get_result(): Resource id #4
Resource id #4 has 1 records

Види Исто така

Белешки од корисници 4 белешки

william at 25thandClement dot com
21 години пред
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.
Ondej Bouda
пред 10 години
It might seem that after calling pg_get_result() upon sending just a single query, the connection will not be busy. The correct way is, though, to call extra pg_get_result() in a loop until it returns false [1].

<?php
$conn = pg_connect('...', PGSQL_CONNECT_FORCE_NEW);
for ($i = 0; $i < 10000; $i++) {
    $query = 'erroneous query';
    if (pg_connection_busy($conn)) {
        fprintf(STDERR, "Connection is busy\n");
        exit(1);
    }
    pg_send_query($conn, $query);
    $res = pg_get_result($conn);
    if ($res === false) {
        fprintf(STDERR, "A result was expected\n");
        exit(1);
    }

    /* The following does not seem necessary for good queries, but is vital for erroneous queries.
       Commenting the loop out leads to this script fail with the "Connection is busy" error. */
    while (pg_get_result($conn));

    // result processing...
}
?>

See http://www.postgresql.org/message-id/flat/[email protected]#[email protected] and https://bugs.php.net/bug.php?id=52750 for detailed information.

[1] Or, even better, use an asynchronous connection since PHP 5.6.
gullevek на gullevek dot org
12 години пред
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);
?>
Marko Tiikkaja
пред 17 години
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.
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.