Avatar billede rthuls Nybegynder
02. september 2003 - 16:06 Der er 12 kommentarer og
1 løsning

check om det findes i db

Jeg prøver at lave en funktion der checker om indholdet af et array findes i databasen. Min funktion ser sådan ud:

function check_db($array, $table){
    openConnection();
    $i = 0;
    for ($i=0; $i<=count($array); $i++) {
        $result = mysql_query("SELECT * FROM $table WHERE katagori='$array[$i]'");
        $total = mysql_num_rows($result);
        if($total>0){
            $i++;
        }
    }
    if($i>0){
        return true;
    }else{
        return false;
    }
    closeConnection();
}

, men det virker ikke helt da jeg får denne fejl:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
Avatar billede rthuls Nybegynder
02. september 2003 - 16:09 #1
Hov, der skal selvføgelig ikke være 2 $i variabler, men selv når det er rettet kommer der fejl.
Avatar billede UlrBri Nybegynder
02. september 2003 - 16:19 #2
Mon ikke fejlen er, at du bruger $i både som for-counter og som counter af forekomster?
Avatar billede UlrBri Nybegynder
02. september 2003 - 16:20 #3
Doh! Man skal jo lige læse din kommentar også.
Avatar billede UlrBri Nybegynder
02. september 2003 - 16:21 #4
Hvad med denneher? :
$result = mysql_query("SELECT * FROM '$table' WHERE katagori='$array[$i]'");

Altså '$table' i stedet for $table
Avatar billede rthuls Nybegynder
02. september 2003 - 16:40 #5
Det er linien her den er galt med:
$total = mysql_num_rows($result);

, så jeg tror nærmere at det er fordi den ikke finder noget der matcher, at den kommer med fejl, men hvordan skal jeg så gøre det?
Avatar billede keet Nybegynder
02. september 2003 - 16:42 #6
Er det ik fordi løkken kommer uden for "range".
Skal man ikke skrive count($array)-1;
Avatar billede UlrBri Nybegynder
02. september 2003 - 16:44 #7
Har du forsøgt? :) Den kan godt melde fejl i den linie, selv om det er SELECT-forespørgslen, der er forkert. Fejlen betyder jo, at argumentet (d.v.s. $result) ikke er gyldigt.

Jeg ville mene, at mysql_num_rows bare returnerer et 0, hvis SELECT'en er rigtig, men der blot ikke er noget, der matcher.
Avatar billede rthuls Nybegynder
02. september 2003 - 16:45 #8
keet >> du har ret i er der manglede et -1, men jeg får stadig den samme fejl.
Avatar billede rthuls Nybegynder
02. september 2003 - 16:47 #9
ulrikatnospamdotdk >> ja, jeg har prøvet, det gjorde ingen forskel.
Jeg kalder min funktion sådan her:

if(check_db($url_array, 'menu') == true){
  echo "findes";
}

er det et problem?
Avatar billede UlrBri Nybegynder
02. september 2003 - 16:57 #10
Hov - i din SELECT står der "katagori" - det er ikke sådan, at der skulle have stået "kategori" ? No offence, men det er jo sådan, man normalt ville stave det :P.
Avatar billede rthuls Nybegynder
02. september 2003 - 17:06 #11
hehe..."heldigvis" staver jeg så dårligt, at jeg har lavet stavefejlen alle stedet, så det er ikke engang det der er skyld i det.

Hvis I kender en anden/smartere måde at teste om indholdet af et array findes i databasen, så skal I endelig sige til.
Avatar billede UlrBri Nybegynder
02. september 2003 - 17:25 #12
Jeg må vist desværre kaste håndklædet i ringen og tilstå, at jeg ikke umiddelbart kan finde på flere konkrete forslag - i hvert fald hvis det stadigvæk er samme fejlmeddelelse, du får :(.

Du kan evt. prøve at debugge dig frem til problemet. Prøv f.eks. at indsætte menu direkte i SELECT'en i stedet for '$table' - hvis det ikke ændrer noget, så prøv med tilsvarende andre konkrete værdier for at skyde dig ind på, hvad der helt præcist går galt. Når det ændrer noget, har du fat i problemet, og så ved du, hvor i scriptet, du skal prøve at fejlrette.
Avatar billede rthuls Nybegynder
02. september 2003 - 17:43 #13
Nu har jeg fundet ud af det og det var selvfølgelig en rigtigt dum fejl.
Jeg løste det ved at tilføjede:
or die (mysql_error());

til min $result linie. Derefter kunne jeg se at problemet var, at der ingen database var valgt, hvilket skyldetes at jeg havde glemt at require min config fil.
Dumt, dumt, dumt...

Men mange tak for hjælpen!
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



IT-JOB

De Nationale Geologiske Undersøgelser for Danmark og Grønland (GEUS)

IT-systemadministrator søges til GEUS

Udviklings- og Forenklingsstyrelsen

Backend-udvikler til ny platform i Azure