Я не согласен с ответом Франсуа Дешене.
К сожалению, pg API кажется немного слабее, чем MySQLi API. Я подумывал об использовании PDO, но пока не слишком разбирался в этом.
Чтобы ответить на ваш вопрос, вам придется пойти немного дальше, чтобы получить эквивалент «mysqli_errno» (то есть фактического номера ошибки). pg_last_error () возвращает строку, а не число. И с цифрами немного легче иметь дело.
http://www.postgresql.org/docs/8.1/static/errcodes-appendix.html
В любом случае, чтобы получить ошибку NUMBER , вам придется использовать комбинацию функций.
pg_send_query_params(blah blah); // or pg_send_query() if you don't use prepared statements
$result = pg_get_result($connection);
$result_status = pg_result_status($result);
$mysqli_errno_equivalent = pg_result_error_field($result_status, PGSQL_DIAG_SQLSTATE);
Надеюсь, кто-то еще найдет более простое решение. Но это то, что я использовал в своем коде (потому что с номерами ошибок в Приложении A к PostgreSQL работать гораздо проще, чем с полнотекстовыми строками ошибок).
К счастью, написать простую обертку вокруг этого тривиально, чтобы не повторяться снова и снова.
Документация подразумевает, что это лучший способ получить номер. http://www.php.net/manual/en/function.pg-result-error-field.php