PHP Conference Japan 2024

pg_fetch_row

(PHP 4, PHP 5, PHP 7, PHP 8)

pg_fetch_row将一行作为枚举数组获取

描述

pg_fetch_row(PgSql\Result $result, ?int $row = null, int $mode = PGSQL_NUM): array|false

pg_fetch_row() 从与指定的 result 实例关联的结果集中获取一行数据。

注意: 此函数将 NULL 字段设置为 PHP null 值。

参数

result

一个 PgSql\Result 实例,由 pg_query()pg_query_params()pg_execute()(以及其他函数)返回。

row

要获取的结果集中的行号。行从 0 开始编号。如果省略或为 null,则获取下一行。

mode

一个可选参数,用于控制返回的 array 的索引方式。 mode 是一个常量,可以取以下值:PGSQL_ASSOCPGSQL_NUMPGSQL_BOTH。使用 PGSQL_NUM,函数将返回一个具有数字索引的数组;使用 PGSQL_ASSOC,它将只返回关联索引;而 PGSQL_BOTH 将同时返回数字和关联索引。

返回值

一个 array,从 0 开始索引,每个值都表示为 string。数据库 NULL 值将返回为 null

如果 row 超出集合中的行数、没有更多行或发生任何其他错误,则返回 false

变更日志

版本 描述
8.1.0 result 参数现在期望一个 PgSql\Result 实例;以前,期望的是 resource

示例

示例 #1 pg_fetch_row() 示例

<?php

$conn
= pg_pconnect("dbname=publisher");
if (!
$conn) {
echo
"发生错误。\n";
exit;
}

$result = pg_query($conn, "SELECT author, email FROM authors");
if (!
$result) {
echo
"发生错误。\n";
exit;
}

while (
$row = pg_fetch_row($result)) {
echo
"作者:$row[0] 电子邮件:$row[1]";
echo
"<br />\n";
}

?>

参见

添加注释

用户贡献的注释 5 个注释

post at zeller-johannes dot de
19 年前
我想知道 PostgreSQL 的数组值是否会被这些函数转换为 PHP 数组。事实并非如此,它们以字符串形式存储在返回的数组中,格式为“{value1 delimiter value2 delimiter value3}”(参见 https://postgresql.ac.cn/docs/8.0/interactive/arrays.html#AEN5389)。
pletiplot at seznam dot cz
18 年前
请注意,当您检索某个 PG 布尔值时,您会得到“t”或“f”字符,它们与 PHP 布尔值不兼容。
eddie at eddiemonge dot com
15 年前
当使用 * 作为 select 参数进行查询时,pg_fetch_row 比 pg_fetch_assoc 快。否则,使用声明的列,这两个函数的速度相似。
darw75 at swbell dot net
23 年前
一种使用两个循环将数据插入表中的方法...

$num = pg_numrows($result);
$col_num = pg_numfields($result);

for ($i=0; $i<$num; $i++) {
$line = pg_fetch_array($result, $i, PGSQL_ASSOC);
print "\t<tr bgcolor=#dddddd>\n";
for ($j=0; $j<$col_num; $j++){
list($col_name, $col_value) =each($line);
print "\t\t<TD ALIGN=RIGHT><FONT SIZE=1 FACE='Geneva'>$col_value</FONT></TD>\n";
}
echo "<br>";
}
Matthew Wheeler
21 年前
请注意,内部行计数器在检索行之前递增。如果您尝试执行以下操作,这会导致出现一个“溢出错误”

pg_result_seek($resid,0);
pg_fetch_row($resid);

您将获得第二个结果,而不是第一个。
To Top