Lorenz R: Fehlermeldung - __LINE__ & mysql_error in Funktion

Hallo,
Folgendes Problem:

Ich habe eine Datei functions.inc.php, in der ich alle Funktionen einer Site zusammenfasse.
Diese include ich in jede Datei.
Jetzt habe ich eine Funktion fehler() mit einem Parameter.
Dieser Parameter ist die Fehlermeldung (Aufruf über fehler("Fehlermeldung");).
Beim Aufruf dieser Funktion passiert folgendes:
Es wird die Fehlermeldung, die als Parameter übergeben wird, ausgegeben, der Fehler wird in die Datenbank geschrieben und es wird gediet [die();]

Problem:

Wenn ich in der Funktion zusätzlich den mysql_error auslesen möchte, um diesen zu Debugzwecken in die Datenbank zu schreiben, ist dieser (innerhalb der Funktion) leer.
Gleiches Problem mit __LINE__
Es wird (logischerweise), die __LINE__ ausgegeben, in der "__LINE__" in der functions.inc.php steht, und nicht die, in dem Script, in dem ich fehler() aufgerufen habe.
Und das selbe Problem mit PHP_SELF, es wird dann "functions.inc.php" ausgegeben, anstatt die Datei, in der ich die Funktion aufgerufen habe.

Natürlich könnte ich die Funktion jetzt so umbauen, dass ich Sie mit fehler("Fehlermeldung",__LINE__,$PHP_SELF,mysql_error()); aufrufen kann.
Aber ich möchte Sie einfach kurz und knackig per fehler("Fehlermeldung"); aufrufen können und alle Daten drinhaben - ohne die 3 Zusatzargumente.

Hat evtl. jemand einen Lösungsvorschlag bzw. eine Alternative?

Danke schonmal im Vorraus,

Lorenz.

  1. Ich grüsse den Cosmos,

    Hat evtl. jemand einen Lösungsvorschlag bzw. eine Alternative?

    Hast du dir schon selbst gegeben. Wenn du die Parameter nicht übergibst, weiss die Funktion nichts davon.

    Möge das "Self" mit euch sein

    --
    Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
    ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
  2. echo $begrüßung;

    Es wird (logischerweise), die __LINE__ ausgegeben, in der "__LINE__" in der functions.inc.php steht, und nicht die, in dem Script, in dem ich fehler() aufgerufen habe.

    Works as designed.

    Und das selbe Problem mit PHP_SELF, es wird dann "functions.inc.php" ausgegeben, anstatt die Datei, in der ich die Funktion aufgerufen habe.

    Du meinst nicht zufälligerweise __FILE__? $PHP_SELF sollte zugunsten von $_SERVER['PHP_SELF'] nicht mehr verwendet werden.

    Natürlich könnte ich die Funktion jetzt so umbauen, dass ich Sie mit fehler("Fehlermeldung",__LINE__,$PHP_SELF,mysql_error()); aufrufen kann.
    Aber ich möchte Sie einfach kurz und knackig per fehler("Fehlermeldung"); aufrufen können und alle Daten drinhaben - ohne die 3 Zusatzargumente.
    Hat evtl. jemand einen Lösungsvorschlag bzw. eine Alternative?

    Ein eigener Errorhandler bekommt ohne weiteres Zutun als Parameter die gewünschten Angaben übergeben (abgesehen von den MySQL-Fehlern). Wenn du selbst einen Fehler mittels trigger_error() erzeugst, hast du somit die Angaben. Außerdem gibt es noch debug_backtrace().

    echo "$verabschiedung $name";