Okay, so I've finally got an opportunity to start converting our code to
use Mysqli instead of the old mysql_* functions. Mysqli is new to me, but
I thought things were going well until the first time I tried to run a
query with a syntax error in it, and it threw up a PHP warning. Being that
Mysqli is an OO API, I guess I assumed that any errors would simply
surface as exceptions, and indeed, I got an exception in this case. But I
also got a PHP warning containing the same information.

This is the first thing that strikes me as terribly wrong. I think any
API, OO or not, should never spit out errors/warnings/notices for routine
errors (like, in this case, an SQL syntax error). Rather, the
function/method should signal an error through a defined mechanism, such
as the return value (e.g., false on failure), or via an exception for
class methods. This philosophy jives well with my understand of the
direction of error handling in PHP, which is to use exceptions, rather
than errors/warnings/notices, for all the newer OOP APIs.

Secondly, I can't find a good way to handle these warnings. We do all
development with error handling set to E_STRICT | E_ALL, and our general
policy is that no such errors should be generated. This behavior by Mysqli
means that we effectively need to catch SQL problems in both our error
handlers and in our exception handling. I recognize that we could just use
suppression, but that's, well, nasty.

Digging a bit more, I found mysqli_report(). This looks pretty good, but I
find it odd that 1) it's a procedural-only function that controls an OO
API, and 2), it takes affect for the entire request, which effectively
means it has to be set up right for each database access rather than just
once per database instance. I suspect this relates to the underlying
implementation, but it's still quite the letdown.

Is there something I'm missing in all this, or is really as clunky as it
seems? What have those of you with more Mysqli experience found to work
well as a good error-handling pattern when working with it?

Robert E. Williams, Jr.
Associate Vice President of Software Development
Newtek Businesss Services, Inc. -- The Small Business Authority

Notice: This communication, including attachments, may contain information that 
is confidential. It constitutes non-public information intended to be conveyed 
only to the designated recipient(s). If the reader or recipient of this 
communication is not the intended recipient, an employee or agent of the 
intended recipient who is responsible for delivering it to the intended 
recipient, or if you believe that you have received this communication in 
error, please notify the sender immediately by return e-mail and promptly 
delete this e-mail, including attachments without reading or saving them in any 
manner. The unauthorized use, dissemination, distribution, or reproduction of 
this e-mail, including attachments, is prohibited and may be unlawful. If you 
have received this email in error, please notify us immediately by e-mail or 
telephone and delete the e-mail and the attachments (if any).

PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to