Hallo zusammen,
ich versuch grad mir eine eigene sql_error.log zu erstellen.
In dieser möchte ich den Fehler, denn 'mysql_error();' zurückgibt protokollieren. Dazu auch den Fehler den PHP dazu ausgibt, denn hier wird dann Datei, Fehler und Zeile angegeben.
Der SQL-Fehler ist ja einfach zu loggen, bei PHP beiss ich mir im Moment die Zähne aus.
hab schon mit folgenden versucht an die PHP-Fehlermeldung zu kommen
- $php_errormsg
- error_get_last() <- kommt nicht die, die am Bildschirm bzw. zum SQL-Fehler passt.
Ich möchte im Prinzip genau das haben, was PHP selbst ins Logfile (wenn eingestellt) schreibt.
=> [19-Mrz-2009 01:12:10] PHP Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in F:\http\entwicklung\startseite\nachrichten.php on line 197
Das Logfile von PHP selbst, ist jedoch für mich nicht verwendbar, da in dieses Fehler geschrieben werden.
im Moment sieht das Ganze etwa so aus:
PHP-Code:
// MY_SQL Fehler in sql_error.log schreiben
if($system_error == 1){
$error_log = fopen("logs/sql_error.log","a");
fputs($error_log,
date("d.m.Y, H:i:s")." von ".$_SESSION['nick']."\n\n".
"in => ".$_SERVER['PHP_SELF']."?page=".$_GET['page']."&loc=".$_GET['loc']."\n".
"PHP Fehlermeldung: ".$php_error['message']."\n".
"in Datei: ".$php_error['file']."\n".
"in Zeile: ".$php_error['line']."\n\n".
"SQL-Statement:". $statement."\n".
$sys_error."\n".
"=========================================================================\n\n"
);
fclose($error_log);
}
Im Script ruf ich es mit include auf... wobei ich mir sehr gut vorstellen könnte statt ein include das in eine Funktion zu packen wenn es dann mal funktioniert.
hier ein Beispiel wie ich es grad teste.
PHP-Code:
$result = mysql_query("SELECT ib.*, u.username
FROM msg_inbox ib, user u
WHERE ib.user_id = ".$_SESSION['user_id']."
AND ib.in_msg_id = '{$_GET['in_msg_id']}'
AND u.userid = ib.from_user_id",$db);
if(!$result){$system_error =1; $statement = "Inbox-Nachricht aus Datenbank auslesen"; $php_error = error_get_last(); $sys_error = mysql_error($db); include("logfile.php");}
$message = mysql_fetch_assoc($result);
Aktuell sehen die Einträge wie folgt aus:
der dazugehörige PHP-Fehler wäre:
[19-Mrz-2009 01:12:10] PHP Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in F:\http\entwicklung\startseite\nachrichten.php on line 197
Code:
19.03.2009, 01:02:46 von IceMan
in => /entwicklung/startseite/index.php?page=nachrichten&loc=read
PHP Fehlermeldung: A session had already been started - ignoring session_start()
in Datei: F:\http\entwicklung\startseite\nachrichten.php
in Zeile: 2
SQL-Statement:Inbox-Nachricht aus Datenbank auslesen
Unknown column 'u.userid' in 'where clause'
=========================================================================