Ik heb doorgaans altijd de volgende code gebruikt om gegevens op te halen uit MySQL:

<?php
/* Performing SQL query */
$query = "SELECT * FROM names ORDER BY name";
$result = mysql_query($query) or die ('Error: ' . mysql_error());

/* Printing results in HTML */
if ($result) {
while ($r = mysql_fetch_array($result)) {
$id = $r["id"];
$name = $r["name"];

echo "$id<BR>$name<BR>";
}

} else {
echo "Niets gevonden.";
}

/* Free resultset */
mysql_free_result($result);

/* Closing connection */
mysql_close($link);
?>

Dit werkte heel lang prima. Ik denk bij de overgang naar een nieuwere PHP versie dat het niet lekker meer werkte, waardoor het script nu niet meer bij "echo "Niets gevonden.";" als de query geen resultaat oplevert.

Iemand een idee hoe ik dit weer werkend krijg? Ik zie zelf de fout namelijk niet.
Zet dit er is boven en vermeld wat je voor foutmelding krijgt?

<?php
// Zo begin je met een nieuw script !!!
ini_set ('display_errors', 1);
error_reporting (E_ALL);
?>
Zet allereerst even php tags om je code heen, dat leest wat makkelijker.

Daarnaast snap ik niet wat het stukje
<?php
echo "";
?>
in je script doet, en op dat punt staat er ook een } teveel. Je zult waarschijnlijk een error krijgen als de query niets oplevert...
<?php
/* Performing SQL query */
$query = "SELECT * FROM names ORDER BY name";
$result = mysql_query($query) or die ('Error: ' . mysql_error());

/* Printing results in HTML */
if ($result) {
while ($row = mysql_fetch_assoc($result)) {

echo $row['id'].'<br />'.$row['id']. '<br />';
}
}
else {
echo 'Niets gevonden.';
}
?>

edit: haakje
Als de query niets oplevert krijg ik gewoon een lege pagina.

Tevens met dit scriptje erboven, blijft de pagina leeg als de query geen result heeft:

<?php
// Zo begin je met een nieuw script !!!
ini_set ('display_errors', 1);
error_reporting (E_ALL);
?>


Volgens mij staat er geen } teveel, er staan evenveel { als } en anders had ik iets van een parse error moeten krijgen of iets dergelijks.
Klopt, je hebt gelijkt wat betreft die }.

Wat er niet klopt is het volgende:

Als je een geldige mysql_query uitvoert, krijg je altijd iets terug, namelijk een resource id. $result bestaat dus wel degelijk ook al zijn er geen gegevens uit de database opgehaald.

Kortom, je zult eerst moeten controleren of er wel degelijk rijen opgehaald zijn door bijvoorbeeld:

<?php
if(mysql_num_rows($result) == 0)
{
echo 'Niets gevonden';
}
else
{
// je verder script
}
?>

[edit]typo[/edit]
Dat klinkt eigenlijk heel logisch. :)
Vreemd is dat het ooit wel heeft gewerkt, maar dan waarschijnlijk onder een eerdere PHP versie.

Maar bedankt voor de tip, volgens mij kom ik er zo wel verder mee. :)

Reageren