Google

NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7">

pg_fetch_object

(PHP 3>= 3.0.1, PHP 4 )

pg_fetch_object -- Holt einen Datensatz als Objekt

Beschreibung

object pg_fetch_object ( resource result, int row [, int result_type])

pg_fetch_object() gibt ein Objekt zurück, dessen Eigenschaften mit den Feldern des erhaltenen Datensatzes übereinstimmen oder FALSE, wenn kein Datensatz mehr gelesen werden konnte oder ein Fehler auftrat.

pg_fetch_object() ist pg_fetch_array() ähnlich, mit einem Unterschied: Statt eines Arrays wird ein Objekt zurückgegeben. Indirekt heisst das, dass man die Daten nur über die Feldnamen und nicht über ihre Offsets ansprechen kann (Zahlen sind nicht erlaubte Eigenschaftsnamen).

row ist die Zeilennummer, die Nummerierung beginnt bei 0.

Von der Geschwindigkeit her ist die Funktion mit pg_fetch_array() identisch und fast so schnell wie pg_fetch_row() (Der Unterschied ist unwesentlich).

Anmerkung: Ab der PHP-Version 4.3.0 ist die Standardeinstellung von result_type PGSQL_ASSOC, während PGSQL_BOTH in älteren Versionen voreingestellt ist. Da nummerische Eigenschaftsnamen von Objekten nicht erlaubt sind, ist PGSQL_BOTH überflüssig.

result_type wird möglicherweise in zukünftigen Versionen gelöscht werden.

Siehe auch pg_query(), pg_fetch_array(), pg_fetch_row() und pg_fetch_result().

Beispiel 1. PostgreSQL fetch object

<?php 
$database = "verlag";
$db_conn = pg_connect ("host=localhost port=5432 dbname=$database");
if (!$db_conn): ?>
    <H1>Konnte keine Verbindung zur PostgreSQL Datenbank <?php echo $database; ?> herstellen.</H1> <?php
    exit;
endif;

$qu = pg_query ($db_conn, "SELECT * FROM verlag ORDER BY autor");
$row = 0; // PostgreSQL braucht einen Zähler, andere DBs evtl. nicht
while ($data = pg_fetch_object ($qu, $row)) {
    echo $data->autor." (";
    echo $data->jahr ."): ";
    echo $data->titel."<BR>";
    $row++;
}
?>
<PRE>
<?php
$fields[] = Array ("autor", "Author");
$fields[] = Array ("jahr",  "  Jahr");
$fields[] = Array ("titel", " Titel");

$row= 0; // PostgreSQL braucht einen Zähler, andere DBs evtl. nicht
while ($data = pg_fetch_object ($qu, $row)) {
    echo "----------\n";
    reset ($fields);
    while (list (,$item) = each ($fields)):
        echo $item[1].": ".$data->$item[0]."\n";
    endwhile;
    $row++;
}
echo "----------\n"; 
?>
</PRE> 
<?php
pg_free_result ($qu);
pg_close ($db_conn);
?>

Anmerkung: Ab der Version 4.1.0 ist der Parameter row optional. Ein Aufruf von pg_fetch_object() inkrementiert den internen Datensatzzähler um 1.