xzilla@xxxxxxxxxxxxxxxxxxxxx wrote: > On Friday 05 November 2004 20:40, ljb wrote: >> ff@xxxxxxxxx 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.