pg-affected-rows () 只會對執行的最後一個 SQL 陳述式生效。如果您將多個陳述式組合在一起,則 pg_affected_rows 可能不會傳回您預期的結果。
例如
<?php
$result = pg_query ('BEGIN; INSERT INTO foo (bar) VALUES (\'baz\'); COMMIT');
echo (pg_affected_rows ($result));
?>
將會導致印出 0,因為 Postgres 執行的最後一個陳述式是 COMMIT,它不會影響任何列。
我還沒試過,所以不確定是否有效,但如果您將查詢拆分,應該可以取得所需的列數。
例如
<?php
$result = pg_query ('BEGIN; INSERT INTO foo (bar) VALUES (\'baz\');');
echo (pg_affected_rows ($result));
pg_query ('COMMIT;');
?>
應該允許您取得受前一個查詢影響的列數。但我還沒試過,所以別太指望它。