2024 年日本 PHP 研討會

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

一個可選參數,用於控制返回的 陣列 的索引方式。mode 是一個常數,可以採用下列值:PGSQL_ASSOCPGSQL_NUMPGSQL_BOTH。使用 PGSQL_NUM,函式將返回一個帶有數字索引的陣列;使用 PGSQL_ASSOC,它將只返回關聯索引;而 PGSQL_BOTH 將同時返回數字和關聯索引。

返回值

一個從 0 開始索引的 陣列,每個值都表示為 字串。資料庫的 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";
}

?>

另請參閱

新增註釋

使用者貢獻的註釋 5 則註釋

post at zeller-johannes dot de
19 年前
我曾經想知道 PostgreSQL 的陣列值是否會被這些函式轉換為 PHP 陣列。實際上並非如此,它們是以字串形式儲存在返回的陣列中,格式為 "{value1 分隔符號 value2 分隔符號 value3}"(請參閱 https://postgresql.dev.org.tw/docs/8.0/interactive/arrays.html#AEN5389)。
pletiplot at seznam dot cz
18 年前
請注意,當您擷取某些 PG 布林值時,您會得到與 PHP 布林值不相容的 't' 或 'f' 字元。
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