Avatar billede revica Nybegynder
22. juni 2006 - 20:21 Der er 8 kommentarer

Hjælp til newbee

Hej

Er der nogle der kan forklare hvad der er galt når denne fejlkode kommer frem:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in D:\www.domæne.dk\include\func.php on line 82

i linie 82 i den omtalte fil står der:

return mysql_fetch_row($result);

Det ville være kanon dejligt hvis der er nen der kan hjælpe mig med dette, da jeg er nybegynder inden for PHP
Avatar billede pidgeot Nybegynder
22. juni 2006 - 20:23 #1
Det betyder ganske enkelt at der er noget galt med din $result. Sandsynligvis er det enten ikke en mysql_query der har genereret det, eller også er der ingen data at hente, enten fordi du ikke har nogle rækker, eller fordi der er noget galt med din forespørgsel.

Smid or die(mysql_error()) ind sammen med dit kald til mysql_query, så kan vi bedre hjælpe - og det bliver endnu nemmere hvis du også kommer med den pågældende query.
Avatar billede revica Nybegynder
22. juni 2006 - 20:39 #2
her er et lille udsnit af filen hvis det hjælper mere:

Det er linie 39 -145 i func.php:

#
# Database abstract layer functions
#
function db_connect($sql_host, $sql_user, $sql_password) {
        return mysql_connect($sql_host, $sql_user, $sql_password);
}

function db_select_db($sql_db) {
        return mysql_select_db($sql_db) || die("Could not connect to SQL db");
}

function db_query($query) {
        global $debug_mode;
        global $mysql_autorepair;
       
        $result = mysql_query($query);
        #
        # Auto repair
        #
        if( !$result && $mysql_autorepair && preg_match("/'(\S+)\.(MYI|MYD)/",mysql_error(), $m) ){
            $stm = "REPAIR TABLE $m[1]";
            error_log("Repairing table $m[1]", 0);
            if ($debug_mode == 1 || $debug_mode == 3) {
                $mysql_error = mysql_errno()." : ".mysql_error();
                echo "<B><FONT COLOR=DARKRED>Repairing table $m[1]...</FONT></B>$mysql_error<BR>";
                flush();
            }
            $result = mysql_query($stm);
            if (!$result)
                error_log("Repaire table $m[1] is failed: ".mysql_errno()." : ".mysql_error(), 0);
            else
                $result = mysql_query($query); # try repeat query...
        }
        if (db_error($result, $query) && $debug_mode==1)
            exit;
        return $result;
}

function db_result($result, $offset) {
        return mysql_result($result, $offset);
}

function db_fetch_row($result) {
        return mysql_fetch_row($result);
}

function db_fetch_array($result, $flag=MYSQL_ASSOC) {
    return mysql_fetch_array($result, $flag);
}

function db_free_result($result) {
        @mysql_free_result($result);
}

function db_num_rows($result) {
      return mysql_num_rows($result);
}

function db_insert_id() {
      return mysql_insert_id();
}

function db_affected_rows() {
    return mysql_affected_rows();
}

function db_error($mysql_result, $query) {
    global $debug_mode, $error_file_size_limit, $error_file_path, $PHP_SELF;
    global $config, $login, $REMOTE_ADDR, $current_location;
   
    if ($mysql_result)
        return false;
    else {
        $mysql_error = mysql_errno()." : ".mysql_error();
        if (@$config["Email"]["admin_sqlerror_notify"]=="Y") {
            x_session_register("login");
            $err_str  = "Date        : ".date("d-M-Y H:i:s")."\n";
            $err_str .= "Site        : ".$current_location."\n";
            $err_str .= "Script      : ".$PHP_SELF."\n";
            $err_str .= "Remote IP  : $REMOTE_ADDR\n";
            $err_str .= "Logged as  : $login\n";
            $err_str .= "SQL query  : $query\n";
            $err_str .= "Error code  : ".mysql_errno()."\n";
            $err_str .= "Description :\n\n".mysql_error();
            func_send_simple_mail($config["Company"]["site_administrator"], $config["Company"]["company_name"].": SQL Error notification", $err_str, $config["Company"]["site_administrator"]);
        }
        if ($debug_mode == 1 || $debug_mode == 3) {
            echo "<B><FONT COLOR=DARKRED>INVALID SQL: </FONT></B>$mysql_error<BR>";
            echo "<B><FONT COLOR=DARKRED>SQL QUERY FAILURE:</FONT></B> $query <BR>";
            flush();
        }
        if ($debug_mode == 2 || $debug_mode == 3) {
            $filename = $error_file_path."/x-errors_sql.txt";
            if ($error_file_size_limit!=0 && @filesize($filename)>$error_file_size_limit*1024)
                @unlink($filename);
            if ($fp = @fopen($filename, "a+")) {
                $err_str = date("[d-M-Y H:i:s]")." SQL error: $PHP_SELF\n".$query."\n".$mysql_error;
                $err_str .= "\n-------------------------------------------------\n";
                fwrite($fp, $err_str);
                fclose($fp);
            }
        }
    }
    return true;
}

#
Avatar billede revica Nybegynder
22. juni 2006 - 20:43 #3
hvis du vil se hvordan fejlen ser ud i virkeligheden :

http://www.piko.dk/customer/home.php
http://www.piko.dk/provider/home.php
Avatar billede pidgeot Nybegynder
22. juni 2006 - 20:43 #4
Nej, det hjælper ikke, udover at det giver mere anledning til at tro på det er din query der er problemet. Vi kan muligvis finde ud af det hvis du giver os din query, men det forudsætter det er en syntaksfejl, og ikke et tabel- eller feltnavn der er stavet forkert.
Avatar billede revica Nybegynder
22. juni 2006 - 20:48 #5
Med fare for at lyde som en total tumbe, hvor finde jeg den query ??
Avatar billede pidgeot Nybegynder
22. juni 2006 - 20:53 #6
Ja, den må jo ligge et sted i din home.php. Hvilken det er, finder du kun ud af ved at teste på det - f.eks. ved at udskrive nogle debug-meddelelser med echo så du kan se hvornår fejlen opstår.

Et simpelt midlertidigt hack ville være at sætte udskrive SQL-sætningen inde i din db_query()-funktion, så du nogenlunde kan se hvor i koden det går galt.

Jeg kan desværre ikke gætte på hvor den er, da jeg ikke kan komme ind på din side.
Avatar billede revica Nybegynder
22. juni 2006 - 20:55 #7
ok, fint nok.. jeg giver op skriv et svar og du får point for dine anstrengelser :-)
Avatar billede pidgeot Nybegynder
22. juni 2006 - 20:59 #8
Hvis du får brug for hjælp med den SQL-sætning, hjælper jeg nu gerne med det når du finder den - så vent evt. med at acceptere til du har den i orden :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester