Avatar billede aquix Nybegynder
17. april 2007 - 22:56 Der er 7 kommentarer og
1 løsning

Fejl i mysql_fetch_array

Hej eksperter

Jeg sidder i en så simpel situation, som at skulle hive noget ret simpel data ud fra en database ved hjælp af en while-løkke... Jeg har oprettet forbindelse til min mysql-database, hvilket også er fint, men i mit mysql_fetch_array melder den fejl. Fejlen ser ud som følger:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/motd.php on line 20.

Linje 20 ser ud som føler:
while($pro_row = mysql_fetch_array($pro_query)) {

Koden som befinder sig ovenover ser således ud:
    include("inc_connect.php");
       
        $pro_query = mysql_query("Select * from $Tproducts where ((stooffdeactive=0) or (stooffdeactive=1 and stonumber>0)) and (status=1) and(offerfrom<=".$curdate." && offerto>=".$curdate.") order by sorting, name");
"HER ER WHILE LØKKEN"

Jeg håber I forstår mit problem, og at I kan være behjælpelige endnu en gang. På forhånd tak.

Mvh
Patrick Pedersen
Avatar billede nixir Nybegynder
17. april 2007 - 23:07 #1
Det er din query den er gal med ... forsøg med denne:

$pro_query = mysql_query("Select * from $Tproducts where ((stooffdeactive=0) or (stooffdeactive=1 and stonumber>0)) and (status=1) and (offerfrom<=$curdate && offerto>=$curdate) order by sorting, name");


Evt.:

$pro_query = mysql_query("Select * from ".$Tproducts." where ((stooffdeactive=0) or (stooffdeactive=1 and stonumber>0)) and (status=1) and (offerfrom<=".$curdate." and offerto>=".$curdate.") order by sorting, name");


Og for at gøre det mere overskueligt (synes jeg) kan du "evt. evt." bruge:

$pro_query = mysql_query("SELECT * FROM ".$Tproducts." WHERE ((stooffdeactive=0) OR (stooffdeactive=1 AND stonumber>0)) AND (status=1) AND (offerfrom<=".$curdate." AND offerto>=".$curdate.") ORDER BY sorting, name");


Jeg ville overveje hvad $Tproducts -variablen indeholder, da det med stor sandsynlighed kan være den der er noget galt med. Det er den eneste jeg sådan lige kan se skulle være kritisk.

Mvh.
Avatar billede aquix Nybegynder
17. april 2007 - 23:29 #2
Der er ikke nogen ændring ved brugen af ovenstående eksempler, desværre... Jeg har forsøgt mig ved at udskifte variablen og der sker ej heller nogen forbedring her.
Avatar billede dkfire Nybegynder
18. april 2007 - 11:42 #3
Har du prøvet at lave en: mysql_query() or die(mysql_error();
Det skulle meget gerne give dig lidt mere svar på hvad der er fejl i din sql.
Avatar billede aquix Nybegynder
18. april 2007 - 14:22 #4
Hej igen

Jeg har indsat en mysql_error, og fejlen kommer nu med følgende beskrivelse:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND offerto>=) ORDER BY sorting, name' at line 1
Avatar billede dkfire Nybegynder
18. april 2007 - 15:08 #5
Sikker på der findes noget i $curdate ??
Du kan alternativt bruge mysqls NOW() funktion istedet.
Avatar billede nixir Nybegynder
18. april 2007 - 15:25 #6
jeg kan lynhurtig konkluderer at der ikke er noget i den variabel - ellers ville den havet skrevet det jo :)

NOW() er i mange tilfælde nemmere og hurtigere ;)

jeg holder på dkfire :)
Avatar billede aquix Nybegynder
18. april 2007 - 15:27 #7
Jeg har fundet fejlen. $curdate var defineret inde i whilen i stedet for inden... Det virker nu. Smid et svar, dkfire, og så skal du få dine point :)) Jeg takker for jer to, som gad ofre tiden på mit lousy problem :)
Avatar billede dkfire Nybegynder
18. april 2007 - 16:23 #8
Jamen det var jo meget godt du fandt den fejl :-)
Men igen, du burde istedet bruge NOW().
Men her er mit svar.
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