如前所述,如果您执行 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); // 与我们的受影响行和返回列相对应的多维数组
?>