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 实例;以前需要一个 资源

示例

示例 #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";
}

?>

参见

添加备注

用户贡献的备注 7 个备注

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)。
3
pletiplot at seznam dot cz
18 年前
注意,当您检索某些 PG 布尔值时,您会得到 't' 或 'f' 字符,它们与 PHP 布尔值不兼容。
0
eddie at eddiemonge dot com
14 年前
当使用 * 作为 select 参数进行查询时,pg_fetch_row 比 pg_fetch_assoc 快。否则,对于声明的列,两者速度相似。
0
darw75 at swbell dot net
22 年前
一种使用 2 个循环将数据插入表中的方法...

$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>";
}
-1
Matthew Wheeler
21 年前
请注意,内部行计数器是在检索行之前递增的。如果您尝试执行以下操作,则会导致“超出范围”错误:

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

您将获得第二个结果,而不是第一个。
-6
maxnamara at yahoo dot com
19 年前
获取下级,并将它们放入数组中。

function get_downlines($my_code){
global $link;

$sql = "select user_id, name from tb_user where parentcode = $my_code";
$res = pg_query($link,$sql);
if(!$res){
echo "Error: ".$sql;exit();
}
$num_fields = pg_num_fields($res);
$info_rows = 0;

$num_rows = pg_num_rows($res);
while($arr = pg_fetch_row($res)){

$info_offset = 1;
$info_columns = 0;

while ($info_offset <= $num_fields) {
$info_elements[$info_rows][$info_columns] = $arr[$info_columns];
$info_offset++; $info_columns++;
}
$info_rows++;
}
return $info_elements;
}
-10
imantr at cbn dot net dot id
22 年前
我使用以下代码将查询结果分配给数组。

while ($row = pg_fetch_row($result)) $newArray[] = $row[0];

print_r($newArray);
To Top