我想知道 PostgreSQL 的数组值是否会被这些函数转换为 PHP 数组。事实并非如此,它们以字符串形式存储在返回的数组中,格式为“{value1 delimiter value2 delimiter value3}”(参见 https://postgresql.ac.cn/docs/8.0/interactive/arrays.html#AEN5389)。
(PHP 4, PHP 5, PHP 7, PHP 8)
pg_fetch_row — 将一行作为枚举数组获取
result
一个 PgSql\Result 实例,由 pg_query()、pg_query_params() 或 pg_execute()(以及其他函数)返回。
row
要获取的结果集中的行号。行从 0 开始编号。如果省略或为 null
,则获取下一行。
mode
一个可选参数,用于控制返回的 array 的索引方式。 mode
是一个常量,可以取以下值:PGSQL_ASSOC
、PGSQL_NUM
和 PGSQL_BOTH
。使用 PGSQL_NUM
,函数将返回一个具有数字索引的数组;使用 PGSQL_ASSOC
,它将只返回关联索引;而 PGSQL_BOTH
将同时返回数字和关联索引。
版本 | 描述 |
---|---|
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";
}
?>
我想知道 PostgreSQL 的数组值是否会被这些函数转换为 PHP 数组。事实并非如此,它们以字符串形式存储在返回的数组中,格式为“{value1 delimiter value2 delimiter value3}”(参见 https://postgresql.ac.cn/docs/8.0/interactive/arrays.html#AEN5389)。
当使用 * 作为 select 参数进行查询时,pg_fetch_row 比 pg_fetch_assoc 快。否则,使用声明的列,这两个函数的速度相似。
一种使用两个循环将数据插入表中的方法...
$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>";
}
请注意,内部行计数器在检索行之前递增。如果您尝试执行以下操作,这会导致出现一个“溢出错误”
pg_result_seek($resid,0);
pg_fetch_row($resid);
您将获得第二个结果,而不是第一个。