如前所述,如果您正在执行 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); pg_affected_rows($res); pg_fetch_all($res); $res = pg_query("Update foo set bar = 'new data' where foo.bar = 'old data' RETURNING foo.pkey");
pg_num_rows($res); pg_affected_rows($res); pg_fetch_all($res); ?>