2024 日本 PHP 研討會

pg_num_rows

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_num_rows傳回結果中的列數

說明

pg_num_rows(PgSql\Result $result): int

pg_num_rows() 會傳回 PgSql\Result 實例中的列數。

注意:

此函式先前稱為 pg_numrows()

參數

result

一個 PgSql\Result 實例,由 pg_query()pg_query_params()pg_execute()(以及其他函式)返回。

返回值

結果中的列數。發生錯誤時,返回 -1

更新日誌

版本 說明
8.1.0 result 參數現在需要一個 PgSql\Result 實例;以前需要一個 資源

範例

範例 #1 pg_num_rows() 範例

<?php
$result
= pg_query($conn, "SELECT 1");

$rows = pg_num_rows($result);

echo
$rows . " row(s) returned.\n";
?>

以上範例將輸出

1 row(s) returned.

參見

新增註釋

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

strata_ranger at hotmail dot com
15 年前
如前所述,如果您正在執行 INSERT/UPDATE 或 DELETE 查詢,並且想知道受影響的列數,您應該使用 pg_affected_rows() 而不是 pg_num_rows()。

然而,您也可以在查詢中利用 postgres 的 RETURNING 子句,從受影響的列中自動選擇欄位。這樣做的好處是,不僅可以知道查詢影響了多少列,還可以準確地知道是哪些列,尤其是在返回主鍵欄位時。

例如

<?php

// 範例查詢。假設這會更新來源表格中的五列資料。
$res = pg_query("Update foo set bar = 'new data' where foo.bar = 'old data' ");
pg_num_rows($res); // 0
pg_affected_rows($res); // 5
pg_fetch_all($res); // FALSE

// 相同的查詢,但帶有 RETURNING 子句。
$res = pg_query("Update foo set bar = 'new data' where foo.bar = 'old data' RETURNING foo.pkey");
pg_num_rows($res); // 5
pg_affected_rows($res); // 5
pg_fetch_all($res); // 對應受影響列和返回欄位的多維陣列
?>
francisco at natserv dot com
16 年前
不確定為什麼此文件中沒有以下說明
備註:使用 pg_affected_rows() 來取得受 INSERT、UPDATE 和 DELETE 查詢影響的列數。

在其他資源中找到。在此處添加,以供其他人查找資訊。
ElDiablo
16 年前
關於前面的說明,您不應該使用 pg_num_rows() 來執行此操作。
您應該改用 pg_affected_rows()。
To Top