Ergebnis 1 bis 7 von 7

Thema: [MySQL] Mysql Field Table Problem.

  1. #1

    [MySQL] Mysql Field Table Problem.

    Tag liebes WebDev Forum.

    Ich hab mal wieder ein Problem, diesmal dreht es sich um MySQL.
    Genauer um den Befehl mysql_field_table ( resource Ergebnis-Kennung, int Feldoffset ), ich kann mir nicht erklaeren was ich falsch mache.

    Ich bekomme wenn ich diese Funktion:
    PHP-Code:
    function mysql_error_log($mysql_request,$list){
        
    $field_table mysql_field_table($mysql_request1);
        
    $error_msg MYSQL_ERROR_TABLE.": ".$field_table." </br>\n".MYSQL_ERROR_NR.": ".mysql_errno()." - ".mysql_error()." | ".date("d.M.Y - h:i:s A")." </br>\n";
        if(
    $list == 0) @$file fopen("moaa/mysql_error_log.txt","a+") or die(FILE_OPEN_ERROR."!");
            elseif(
    $list == 1) @$file fopen("mysql_error_log.txt","a+") or die(FILE_OPEN_ERROR."!");
            
    fwrite($file$error_msg);
        
    fclose($file);
        return die(
    MYSQL_ERROR."!");

    aufrufe, diese Fehlermeldung:
    Code:
    Warning: mysql_field_table(): supplied argument is not a valid MySQL result resource in D:\Programme\xampp\htdocs\xampp\WebDev\_mocms\moaa\function.php on line 7
    Ok sie hat ein nicht Valides MySQL Argument, trotzdem weiß ich nicht was ich daran veraendern kann/muss damit es geht. =)
    Und so frage ich die Funktion ab, der Inhalt der MySQL query() abfrage ist bewusst Fehlerhaft, da ich die oben genannt Funktion Testen will.
    PHP-Code:
    $query "SELECT * FRM tabelle ORDER BY ID DESC;";
    $sql = @mysql_query($query);
    if(!
    $sqlmysql_error_log($sql0); 
    Hoffe ihr koennt mir Helfen. =)

  2. #2
    Wenn deine Abfrage Fehlerhaft ist, liefert mysql_query() keine Ergebniskennung zurück. $sql kann also nicht als Variable für mysql_field_table() verwendet werden.

    Außerdem weiß ich nicht, was du mit der 1 bezwecken willst, ist das tatsächlich der Name einer Spalte?

  3. #3
    Zitat Zitat
    Wenn deine Abfrage Fehlerhaft ist, liefert mysql_query() keine Ergebniskennung zurück. $sql kann also nicht als Variable für mysql_field_table() verwendet werden.
    Hm irgendwie hab ich nen Brett vorm Kopf, ich versteh zwar was du meinst aber ich kann mir keine Loesung daraus reimen. ,(

    Zitat Zitat
    Außerdem weiß ich nicht, was du mit der 1 bezwecken willst, ist das tatsächlich der Name einer Spalte?
    Das ist der Feldindex der Tabelle, koennte also auch 0 da stehen.
    Quelle: mysql_field_table()

  4. #4
    Du kannst die Funktion so nicht benutzen, wenn eine Fehler auftritt (Was ja immer der Fall ist, wenn du die Funktion aufrufst) $mysql_request ist immer null, weil die Query fehlgeschlagen ist. Dementsprechend kommst du auch nicht an den Tabellennamen ran, da die Query (zumindest ist das meistens der Grund) einen Syntaxfehler enthält - wie soll MySQL da verstehen, auf wleche Tabelle du zugreifen wolltest?

  5. #5
    OK gut jetzt leuchtet es nen bischen ein.

    Hm was gibt es denn noch fuer moeglichkeiten Wichtige Infos bei einem Datenbank Fehler in eine Log zu schreiben?

  6. #6
    Zitat Zitat von Jay Beitrag anzeigen
    Hm was gibt es denn noch fuer moeglichkeiten Wichtige Infos bei einem Datenbank Fehler in eine Log zu schreiben?
    Wie meinst du das bitte? o_O Bzw. warum brauchst du mysql_field_table () für einen Errorlog? o_O''

    Du brauchst doch einfach nur bei einem Datenbankfehler z.B. die Query, den von MySQL gelieferten Fehler und am besten auch noch einen Timestamp an irgendeine Datei anhängen.

    Beispiel:
    PHP-Code:
    function db_error ($query$db) {
        
    $log $query '::';
        if (
    $db != null)
            
    $log .= mysql_error ($db) . '::';
        else
            
    $log .= '::';
        
    $log .= time () . "\n";
        
    $file fopen ('adminbereich/errorlog.txt''a+');
        
    fwrite ($file$log);
        
    fclose ($file);
        
    // Optional, falls bei DB-Fehler das
        // Skript abgebrochen werden soll:
        
    die ('Ein Datenbankfehler ist aufgetreten. Bitte versuche es später nochmals!');
    }


    // Aufruf wäre dann so:
    // ...
    $query 'SELECT ...';
    $result mysql_query ($query$db) or db_error ($query$db); 

  7. #7
    lol stimmt eigentlich, werds gleich mal ausprobieren.

    e;
    PHP-Code:
    function mysql_error_log($mysql_query,$list){
        
    $error_msg MYSQL_ERROR_NR.":</br>\n&nbsp;".mysql_errno()." - ".mysql_error()." | ".date("d.M.Y - h:i:s A")." </br>\n".MYSQL_ERROR_QUERY.":</br>\n&nbsp;".$mysql_query." <hr noshade=\"noshade\">\n";
        if(
    $list == 0) @$file fopen("moaa/mysql_error_log.txt","a+") or die(FILE_OPEN_ERROR."!");
            elseif(
    $list == 1) @$file fopen("mysql_error_log.txt","a+") or die(FILE_OPEN_ERROR."!");
            
    fwrite($file$error_msg);
        
    fclose($file);
        return die(
    MYSQL_ERROR."!");

    So hab ich es jetzt geloest.
    Danke an alle fuer die Hilfe. =)

    Geändert von Blakkeight (23.02.2007 um 12:39 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •