Re: native error handling in PEAR::DB drivers
| From: | Roman Neuhauser | Date: | Mon, 09 Jun 2003 16:16:19 +0000 |
| Subject: | Re: native error handling in PEAR::DB drivers | ||
| References: | 1 2 | Groups: | php.pear.dev |
| Request: | Send a blank email to pear-dev+get-17207@lists.php.net to get a copy of this message | ||
# jon@php.net / 2003-06-09 11:48:30 -0400:
> On Mon, Jun 09, 2003 at 01:12:53PM +0200, Roman Neuhauser wrote:
>
> > these are the bases of errorNative() methods of individual drivers:
> >
> > DB/fbsql.php : fbsql_errno()
> > DB/ibase.php : -
> > DB/ifx.php : ifx_error() . ' ' . ifx_errormsg()
> > DB/msql.php : -
> > DB/mssql.php : -
> > DB/mysql.php : mysql_errno()
> > DB/mysql4.php : mysql_errno()
> > DB/oci8.php : OCIError()['code']
> > DB/odbc.php : odbc_error() . ' ' . odbc_errormsg()
> > DB/pgsql.php : pg_errormessage()
> > DB/sybase.php : sybase_get_last_message()
> >
> > shouldnn't they all behave the same, returning either the number or the
> > text? I'd like to push some of the code up to the parent (DB::common),
> > but these trivial differences make it problematic.
>
> I think the lowest common denominator is going to be the error code,
> and it makes sense that all of the errorNative() calls should return a
> consistent type of error.
>
> Perhaps errorNative() could grow an optional parameter ($verbose?)
> that would indicate that the caller was also interested in the error
> text (if available), as well?
I've been playing with errorNative() methods, and unfortunately
several PHP extensions expose no (easy, known to me) way of getting
at any native error code, and some parse it out of the native error
message.
That makes me think the best option is having errorNative() return
an array like the one returned by OCIError().
This is a bit complicated as I don't know the error message format
of all the databases, or other ways of getting at the codes.
For example, a user note at
http://www.php.net/manual/en/function.mssql-get-last-message.php
states that you can get the code from SELECT @@ERROR. This would
make the mssql driver more compatible with the rest, but would this
be welcome?
--
If you cc me or remove the list(s) completely I'll most likely ignore
your message. see http://www.eyrie.org./~eagle/faqs/questions.html