PHP Doku:: Liefert Werte aus einer Ergebnismenge - function.pg-fetch-result.html

Verlauf / Chronik / History: (6) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzDatenbankerweiterungenAnbieterspezifische DatenbankerweiterungenPostgreSQLPostgreSQL-Funktionenpg_fetch_result

Ein Service von Reinhard Neidl - Webprogrammierung.

PostgreSQL-Funktionen

<<pg_fetch_object

pg_fetch_row>>

pg_fetch_result

(PHP 4 >= 4.2.0, PHP 5)

pg_fetch_resultLiefert Werte aus einer Ergebnismenge

Beschreibung

string pg_fetch_result ( resource $result , int $row , mixed $field )
string pg_fetch_result ( resource $result , mixed $field )

pg_fetch_result() liefert den Wert einer bestimmten Zeile und Spalte eines PostgreSQL Abfrageergebnisses.

Hinweis:

Diese Funktion ersetzt die Funktion pg_result().

Parameter-Liste

result

PostgreSQL Verbindungskennung, die (unter anderem) von den Funktionen pg_query(), pg_query_params() oder pg_execute() zurückgegeben wurde.

row

Die Nummer der Zeile des Abfrageergebnisses, die geholt werden soll. Die Nummerierung beginnt bei 0. Fehlt dieser Parameter, so wird jeweils die nächste Zeile geholt.

field

Ein string, der den Feldnamen des gewünschten Feldes enthält oder dessen numerischen Feldindex (beginnend bei 0).

Rückgabewerte

Boolesche Werte werden als "t" oder "f" zurückgegeben. Alle anderen Typen, einschließlich Arrays, werden als Strings zurückgegeben, in der vom psql-Befehl bekannten PostgreSQL-Standardformatierung. Nullwerte der Datenbank NULL werden als NULL zurückgegeben.

Bei einem Fehler oder wenn der Parameter row größer als die Anzahl der Zeilen im Abfrageergebnis ist, wird FALSE zurückgegeben.

Beispiele

Beispiel #1 pg_fetch_result() Beispiel

<?php
$db 
pg_connect("dbname=users user=me") || die();

$res pg_query($db"SELECT 1 UNION ALL SELECT 2");

$val pg_fetch_result($res10);

echo 
"Das erste Feld in der zweiten Zeile enthält: "$val"\n";
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Das erste Feld in der zweiten Zeile enthält: 2

Siehe auch


4 BenutzerBeiträge:
- Beiträge aktualisieren...
Alan U. Kennington
22.09.2006 15:49
See bug #33809 http://bugs.php.net/bug.php?id=33809
Whether this really is a bug or a feature is not clear.
However, it is probably best to always put your column names in extra quotes.

$res = pg_query(...);
$colname = pg_field_name($res, $j);
pg_fetch_result($res, $i, "\"$colname\"");
Alan U Kennington
22.09.2006 14:16
In order to use upper case in pg_fetch_result column names, it is apparently necessary to include explicit quotation marks.

Thus when I do this sort of thing:

$res = pg_query(...);
$ncols = pg_num_fields($res);
for ($j = 0; $j < $ncols; ++$j) {
    $colname[$j] = pg_field_name($res, $j);
    $name = htmlspecialchars($colname[$j]);
    print("Column $j name = \"$name\"\n");
    $value = htmlspecialchars(pg_fetch_result($res, 0, $colname[$j]));
    print("Column \"{$colname[$j]}\" value = \"$value\"\n");
    }

I get this sort of thing:

[....]
Warning: pg_fetch_result() [function.pg-fetch-result]: Bad column offset specified in /.../view.php on line 247
Column 8 name = "VEC index"
Column "VEC index" value = ""

But if I change the $value line to this:

$value = htmlspecialchars(pg_fetch_result($res, 0, "\"$colname[$j]\""));

I get this:

[...]
Column 8 name = "VEC index"
Column "VEC index" value[0] = "47"

In my opinion, pg_fetch_result(...) should use the quotes already. In other words, this may be a bug in the PHP postgres library. It does not seem to be a documented feature of pg_fetch_result() although the postgresql manual documents it under "SQL syntax", "Lexical structure".

PHP version 5.1.4.
psql version 8.1.4.
Akbar
1.12.2004 17:01
Use can use pg_fetch_result when getting a value (like a smallint as in this example) returned by your stored procedure

<?php
$pgConnection
= pg_connect("dbname=users user=me");

$userNameToCheckFor = "metal";

$result = pg_query($pgConnection, "SELECT howManyUsersHaveThisName('$userNameToCheckFor')");

$count = pg_fetch_result($result, 0, 'howManyUsersHaveThisName');

?>
newby_AT_nobletec_DOT_com
4.09.2002 17:12
Comment on boolean fields:

If you retrieve a boolean value from the PostgreSQL database, be aware that the value returned will be either the character 't' or the character 'f', not an integer.  So, the statement

     if (pg_fetch_result($rsRecords,0,'blnTrueFalseField')) {
       echo "TRUE";
     } else {
       echo "FALSE";
     }

will echo "TRUE" in either case (True or False stored in the field).  In order to work as expected, do this instead:

     if (pg_fetch_result($rsRecords,0,'blnTrueFalseField') == 't') {
       echo "TRUE";
     } else {
       echo "FALSE";
     }



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)