PeddaMedlem sedan juni 20006 032 inlägg 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 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 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 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 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 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
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 Pedda, prova göra som K@llen tipsade om:
$result = mysql_query($sql) or die( mysql_error() );
Brukar bli lättare då... :)