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 . " 行返回。\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