Please note that a very old bug (#76548) has been fixed in 7.2.8.
Previously, pg_fetch_result did not fetch the next row if $row was omitted.
It is now well the case, so bad use of the function can now cause some bugs in your codes.pg_fetch_result
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
pg_fetch_result
Референца за `function.pg-fetch-result.php` со подобрена типографија и навигација.
pg_fetch_result
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
pg_fetch_result — Враќа вредности од примерок на резултат
= NULL
pg_fetch_result() враќа вредност од одреден ред и поле (колона) во PgSql\Result instance.
Забелешка:
Оваа функција порано се нарекуваше pg_result().
Параметри
result-
Еден PgSql\Result инстанца, вратена од pg_query(), pg_query_params() or pg_execute()инстанца, или ознаката за завршување на PostgreSQL командата поврзана со резултатот
row-
Број на ред во резултатот за преземање. Редовите се нумерирани од 0 нагоре. Ако е изоставен, се презема следниот ред.
field-
А string што го претставува името на полето (колоната) за преземање, инаку int што го претставува бројот на полето за преземање. Полињата се нумерирани од 0 нагоре.
Вратени вредности
Буловата вредност се враќа како "t" или "f". Сите други типови, вклучувајќи ги и низите, се враќаат како низи форматирани на истиот стандарден PostgreSQL начин што би го виделе во
psql програма. База на податоци NULL
вредностите се враќаат како null.
false се враќа ако row го надминува бројот на редови во множеството, или при каква било друга грешка.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.3.0 |
row сега е null.
|
| 8.1.0 |
На result параметарот очекува PgSql\Result
инстанца сега; претходно, а resource се очекуваше.
|
Примери
Пример #1 pg_fetch_result() example
<?php
$db = pg_connect("dbname=users user=me");
$res = pg_query($db, "SELECT 1 UNION ALL SELECT 2");
$val = pg_fetch_result($res, 1, 0);
echo "First field in the second row is: ", $val, "\n";
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
First field in the second row is: 2
Види Исто така
- pg_query() за да го одредите резултатот од барањето.
- pg_fetch_array() - Преземи ред како низа
Белешки од корисници 5 белешки
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";
}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\"");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.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');
?>