webForumDet fria alternativet

Warning: mysql_fetch_assoc()...

7 svar · 762 visningar · startad av Pedda

PeddaMedlem sedan juni 20006 032 inlägg
#1

Jag får följande felmeddelande:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\apache\htdocs\projekt_243\index.php on line 411

Rad 411 ser ut så här (första raden):

$sql = "SELECT p_refuser, p_refmedlid, COUNT(p_refuser) AS antal FROM poang GROUP BY p_refuser ORDER BY antal DESC LIMIT 5";
$result = mysql_query($sql);
while ($rad = mysql_fetch_assoc($result)) {	
    echo "<img src=\"layout/dot.gif\" width=\"6\" height=\"7\" /> <a href=\"profile.php?id=".$rad['p_refmedlid']."\">".$rad['p_refuser']."</a> (".$rad['antal'].")<br>";
}

Någon som vet vad felet kan vara?

MySQL 4.0.16
Apache2
PHP 4.3.3

K@llenMedlem sedan mars 20032 667 inlägg
#2

Vad får du för felmeddelande om du lägger in lite felhantering:

$sql = "SELECT p_refuser, p_refmedlid, COUNT(p_refuser) AS antal FROM poang GROUP BY p_refuser ORDER BY antal DESC LIMIT 5";

$result = mysql_query($sql) or die( mysql_error() );

   if ( mysql_num_rows( $result ) < 1 ) {

      print "Ingen träff";      

   }

   else {

while ($rad = mysql_fetch_assoc($result)) {    
    echo "<img src=\"layout/dot.gif\" width=\"6\" height=\"7\" /> <a href=\"profile.php?id=".$rad['p_refmedlid']."\">".$rad['p_refuser']."</a> (".$rad['antal'].")<br>";
}

}
PeddaMedlem sedan juni 20006 032 inlägg
#3

Nu får jag detta felmeddelande plus att den skriver ut "Ingen träff".

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\apache\htdocs\projekt_243\index.php on line 412
Ingen träff

och nej, databasen är inte tom. ;)

K@llenMedlem sedan mars 20032 667 inlägg
#4

Felet brukar ges när det är något fel på sql-frågan, men din syntax ser rätt ut vad jag kan se. Har du stavad tabell- och kolumnnamn rätt?

PeddaMedlem sedan juni 20006 032 inlägg
#5

ja, allt är rättstavat. Får testa mig fram lite mer och se om jag hittar felet.

aasahMedlem sedan mars 20034 471 inlägg
#6

Gissningsvis är felet i "GROUP BY"-klausulen.

Du skrev:
SELECT p_refuser, p_refmedlid, COUNT(p_refuser) AS antal
FROM poang
GROUP BY p_refuser
ORDER BY antal DESC LIMIT 5";

Jag gissar att följande blir rätt:
SELECT p_refuser, p_refmedlid, COUNT(p_refuser) AS antal
FROM poang
GROUP BY p_refuser, p_refmedlid
ORDER BY antal DESC LIMIT 5";

När man försöker ta ut fler kolumner än de man grupperar över tillsammans med aggregerande funktioner (count, average, ... et c) brukar det leda till fel.

K@llenMedlem sedan mars 20032 667 inlägg
#7

aasah skrev:

När man försöker ta ut fler kolumner än de man grupperar över tillsammans med aggregerande funktioner (count, average, ... et c) brukar det leda till fel.

Normalt är det så, dock inte i mysql. För de har lite egna regler här och där.
http://www.mysql.com/doc/en/GROUP-BY-hidden-fields.html

lunne82Medlem sedan dec. 2003153 inlägg
#8

Pedda, prova göra som K@llen tipsade om:

$result = mysql_query($sql) or die( mysql_error() );

Brukar bli lättare då... :)

139 ms totalt · 3 externa anrop · v20260731065814-full.30151723
137 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)