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 个注释

up
4
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); // 与我们的受影响行和返回列相对应的多维数组
?>
up
1
francisco at natserv dot com
16 年前
不确定为什么此文档没有以下说明
注意:使用 pg_affected_rows() 获取 INSERT、UPDATE 和 DELETE 查询影响的行数。

在其他资源中找到。添加在这里,以防其他人正在寻找这些信息。
up
0
ElDiablo
15 年前
关于前面的说明,你不应该为此使用 pg_num_rows()。
相反,您应该查看 pg_affected_rows()。
To Top