xzilla@users.sourceforge.net wrote:
> On Friday 05 November 2004 20:40, ljb wrote:
>> ff@dr.ufu.br wrote:
>> > Hi,
>> >
>> > I am having a problem with a system I developed using php with
>> > postgres. ...
>> >
>> > I am not able to get a error_number in pgsql errors, only the error
>> > message. So when I used pgsql 7.3 a used the string "referential
>> > integrity violation" to detect this error, but on version 7.4 of pgsql
>> > this string was replaced with "violates foreign key constraint" .
>> > Anyone has a definitive solution on this or the way is to wait and change
>> > all my code on future releases of pgsql?
>>
>> Unfortunately this is a limitation of the PHP PostgreSQL extension.
>> PostgreSQL provids access to error numbers (I think as of 7.4)
>> through libpq PQerrorField(), but PHP doesn't give you access to this yet.
>>
>
> Actually I believe you can get it:
> http://us2.php.net/manual/en/function.pg-result-error.php
>
> though this will only work in pg74 or greater.
No, I don't think PHP has this capability (get the value of an error
message subfield). The pg_result_error() you refer to gives you the whole
message, which makes it hard for a program to determine exactly what went
wrong.
On the documentation page you point to, somebody added a comment
referencing his own patch. The patch adds a PHP function called
pg_result_error_field(), which lets a script get at the individual
PostgreSQL error message fields. This would be a nice addition to PHP, but
I don't know if the patch was submitted or accepted. It isn't in the latest
PHP 4 release, 4.3.9. As you point out, however, it won't help the original
poster still dealing with PostgreSQL 7.3, which doesn't have this feature.