Fixed error reporting

This commit is contained in:
Michael 2017-07-12 08:14:36 +00:00
parent 69f20959ff
commit 568abd537a

View file

@ -638,20 +638,22 @@ class dba {
} }
if (self::$dbo->errorno != 0) { if (self::$dbo->errorno != 0) {
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 1); $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 3);
$called_from = array_shift($trace);
// We are having an own error logging in the function "p" if (isset($trace[2])) {
if ($called_from['function'] != 'p') { $called_from = $trace[2];
} else {
// We use just something that is defined to avoid warnings
$called_from = $trace[0];
}
// We are having an own error logging in the function "e"
if ($called_from['function'] != 'e') {
// We have to preserve the error code, somewhere in the logging it get lost // We have to preserve the error code, somewhere in the logging it get lost
$error = self::$dbo->error; $error = self::$dbo->error;
$errorno = self::$dbo->errorno; $errorno = self::$dbo->errorno;
$sql = $args[0];
array_shift($args);
logger('DB Error '.self::$dbo->errorno.': '.self::$dbo->error."\n". logger('DB Error '.self::$dbo->errorno.': '.self::$dbo->error."\n".
$a->callstack(8)."\n".self::replace_parameters($sql, $args)); $a->callstack(8)."\n".self::replace_parameters($sql, $params));
self::$dbo->error = $error; self::$dbo->error = $error;
self::$dbo->errorno = $errorno; self::$dbo->errorno = $errorno;
@ -714,11 +716,17 @@ class dba {
$error = self::$dbo->error; $error = self::$dbo->error;
$errorno = self::$dbo->errorno; $errorno = self::$dbo->errorno;
$sql = $args[0];
array_shift($args); array_shift($args);
// When the second function parameter is an array then use this as the parameter array
if ((count($args) > 0) && (is_array($args[0]))) {
$params = $args[0];
} else {
$params = $args;
}
logger('DB Error '.self::$dbo->errorno.': '.self::$dbo->error."\n". logger('DB Error '.self::$dbo->errorno.': '.self::$dbo->error."\n".
$a->callstack(8)."\n".self::replace_parameters($sql, $args)); $a->callstack(8)."\n".self::replace_parameters($sql, $params));
self::$dbo->error = $error; self::$dbo->error = $error;
self::$dbo->errorno = $errorno; self::$dbo->errorno = $errorno;