pg_query_params() で boolean な変数を渡すとエラーになるのでその対策。
pg_query_params($query, array(($flag ? 'TRUE' : 'FALSE')));
boolean の代わりに 'TRUE'("TRUE") / 'FALSE'("FALSE") を渡してあげる。
これバグな気がするんだが…
おまけ:
PostgreSQL から boolean な値を取ると 't'/'f'(文字列)で返ってくるので、自前で判定して代入する必要がある。
$flag = ($rows['flag'] == 't' ? true : false);
判定には strcmp() とか === とかでも良いと思う。