Co-founder at MoneyBird, Entrepreneur, Software Engineer.
Regelmatig zie ik de vraag langs komen over foutafhandeling voor MySQL in PHP. Gebruikers krijgen dan een onduidelijke foutmelding van mysql_fetch_*, terwijl de fout eigenlijk heel ergens anders ligt.
<?php
$rResult = mysql_query("SELECT * FROM tabel WHERE iets=true");
while($aRow = mysql_fetch_assoc($rResult)){
echo $aRow['kolom'];
}
?>
Het is mogelijk dat in mysql_query een fout optreed, maar doordat MySQL niet standaard een foutmelding op het scherm weergeeft, kan het voorkomen dat je hier verder niets van merkt. Pas als je bij mysql_fetch_assoc terecht komt geeft PHP een foutmelding, omdat in $rResult een boolean ‘false’ zit en niet de verwachte resource.
Dit is op te lossen door de functie mysql_error te gebruiken. Hiermee kan je netjes de foutmelding op het scherm weergeven:
<?php
$sSql = "SELECT * FROM tabel WHERE kolom=iets";
$rResult = mysql_query($sSql);
if(!$rResult){
echo "Er ging iets fout: ".mysql_error()." (Query: ".$sSql.")";
} else {
while($aRow = mysql_fetch_assoc($rResult)){
echo $aRow['kolom'];
}
}
?>
Hierdoor zal je bij een mogelijke fout in je query een nette foutmelding krijgen.