Ik heb dit script:

<?php
error_reporting(E_ALL);

include("config.php");
$query = "SELECT le.naam, le.site, le_categorie.categorie".
"FROM le,le_categorie ".
"WHERE le.categorie = le_categorie.categorie";
$result = mysql_query($query);

$content = array();
while($row = mysql_fetch_array($result)){
$content[$row['categorie']][] = $row['naam'];
}

echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"left\">
<tr>
<td width=\"285\" height=\"14\" bgcolor=\"#096ea1\">
<span class=\"style1\">Links:</span></td>
</tr>
</table>";


foreach($content as $categorie => $namen)
{

echo "<b><br />" . $categorie. ":</b><br />";
foreach($namen as $naam)
{
echo'
<body link="#000000" vlink="#000000" alink="#000000">
<a href="'.$site.'">'.$naam.'</a><br />
</body>';
}
}
?>

Het geeft deze melding:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/httpd/vhosts/duursportersweb.nl/httpdocs/links/overzicht.php on line 11

Wat doe ik fout?
Doe eens een echo $query en voer die uit in phpmyadmin.
Sorry ben niet zo bekend hiermee kun je even in een paar zinnen extra uitleggne wat je bedoeld?
Voor de 1000-ste keer: Controleer altijd of je query wel is gelukt! Je weet zeker dat deze vroeg of laat zal MISlukken, dat blijkt nu al wel.


$result = mysql_query($query); // dit heb je al

// dit onder deze regel zetten:
if(!$result){ // query is mislukt
  echo 'Fout: '.mysql_error().' met query: '.$query;
  die(); // kan beter...
}

// rest van je script
Ik krijg deze melding:

Fout: 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 'WHERE le.categorie = le_categorie.categorie' at line 1 met query: SELECT le.naam, le.site, le_categorie.categorieFROM le,le_categorie WHERE le.categorie = le_categorie.categorie

Dit is de query:
SELECT le.naam, le.site, le_categorie.categorieFROM le,le_categorie WHERE le.categorie = le_categorie.categorie

Zoals je kunt zien, is de FROM vastgeplakt aan le_categorie.categorie: le_categorie.categorieFROM Daar hoort natuurlijk nog een spatie tussen te staan.

Oplossing: Noteer je queries over meerdere regels zonder al die extra quotes en punten, dat maakt het een stuk overzichtelijker:

$query = "
SELECT 
  le.naam,
  le.site,
  le_categorie.categorie 
FROM 
  le,
  le_categorie 
WHERE 
  le.categorie = le_categorie.categorie
"; 


Edit: Opmaak aangepast
Frank schreef op 16.05.2006 17:29
Voor de 1000-ste keer: Controleer altijd of je query wel is gelukt!


@Frank: Je het helemaal gelijk maar voor Erwin is het waarschijnlijk pas de eerste keer. ;-)
@ SanThe -Lazy-:

Klopt helemaal maar ik snap wel dat het voor hem vervelend is.




Ik krijg nu deze melding:

Notice: Undefined variable: site in /home/httpd/vhosts/duursportersweb.nl/httpdocs/links/overzicht.php on line 43

Is dus wel een andere maar ik snap eerlijk gezegd niet wat ik fout doe
@SanThe: Helemaal mee eens, daar ging ik ook van uit. Vandaar dat er ook een stukje code bij zat. Deze heeft het probleem inmiddels ook al aan het licht gebracht. Hopelijk ziet Erwin nu ook het nut van dit soort controles. Iedere aanname 'het zal wel goed gaan' is een toekomstig probleem.
Jep en voor alles is een eerste keer :)

Ik weet nog dat ik hiermee goed "nat" ging om daarna nooit meer deze fout te maken en dus te checken want dat is wat je keer op keer doet in PHP alles checken en nooit ervan uit gaan dat "iets" goed gaat.

Suc6 in iedergeval!!
Maar goed niemand die het weeet dus?

Reageren