note 80205 added to function.set-error-handler
| From: | webmaster at paramiliar dot com | Date: | Fri, 04 Jan 2008 07:03:52 +0000 |
| Subject: | note 80205 added to function.set-error-handler | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-134756@lists.php.net to get a copy of this message | ||
We needed to use an error handler to handle SQL errors while passing the query along so the query is
also logged and this is what we came up with, its kind of an ugly bridge but it works 100%
<?php
function myErrorHandler($errno, $errstr, $errfile, $errline){
switch ($errno) {
case E_USER_ERROR:
if ($errstr == "(SQL)"){
// handling an sql error
echo "<b>SQL Error</b> [$errno] " . SQLMESSAGE . "<br
/>\n";
echo "Query : " . SQLQUERY . "<br />\n";
echo "On line " . SQLERRORLINE . " in file " . SQLERRORFILE . " ";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
echo "Aborting...<br />\n";
} else {
echo "<b>My ERROR</b> [$errno] $errstr<br />\n";
echo " Fatal error on line $errline in file $errfile";
echo ", PHP " . PHP_VERSION . " (" . PHP_OS . ")<br />\n";
echo "Aborting...<br />\n";
}
exit(1);
break;
case E_USER_WARNING:
case E_USER_NOTICE:
}
/* Don't execute PHP internal error handler */
return true;
}
// function to test the error handling
function sqlerrorhandler($ERROR, $QUERY, $PHPFILE, $LINE){
define("SQLQUERY", $QUERY);
define("SQLMESSAGE", $ERROR);
define("SQLERRORLINE", $LINE);
define("SQLERRORFILE", $PHPFILE);
trigger_error("(SQL)", E_USER_ERROR);
}
set_error_handler("myErrorHandler");
// trigger an sql error
$query = "SELECT * FROM tbl LIMIT 1";
$sql = @mysql_query($query)
or sqlerrorhandler("(".mysql_errno().") ".mysql_error(), $query,
$_SERVER['PHP_SELF'], __LINE__);
?>
----
Server IP: 194.145.210.3
Probable Submitter: 82.37.208.186
----
Manual Page -- http://www.php.net/manual/en/function.set-error-handler.php
Edit -- https://master.php.net/note/edit/80205
Del: integrated -- https://master.php.net/note/delete/80205/integrated
Del: useless -- https://master.php.net/note/delete/80205/useless
Del: bad code -- https://master.php.net/note/delete/80205/bad+code
Del: spam -- https://master.php.net/note/delete/80205/spam
Del: non-english -- https://master.php.net/note/delete/80205/non-english
Del: in docs -- https://master.php.net/note/delete/80205/in+docs
Del: other reasons-- https://master.php.net/note/delete/80205
Reject -- https://master.php.net/note/reject/80205
Search -- https://master.php.net/manage/user-notes.php