Het is al vaker tegen mij gezegd dat ik error handeling onder de knie moet krijgen. Bij deze een speciale topic om te checken of ik het snap en of het voldoende is om de errors te handelen.
Code tot nu toe (ja, kopieetje)
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
function error($iLevel, $sMessage, $sFile, $iLine)
{
$aLevels = array(
2 => 'WARNING',
8 => 'NOTICE',
256 => 'FATAL ERROR',
512 => 'WARNING',
1024 => 'NOTICE' );
if(array_key_exists($iLevel, $aLevels))
{
$sLevel = $aLevels[$iLevel];
}
else
{
$sLevel = 'ONBEKENDE FOUT';
}
echo 'Er is een fout opgetreden!<br />';
echo 'Foutsoort: '.$sLevel.'<br />';
echo 'Foutmelding: '.$sMessage.'<br />';
echo 'Bestand: '.$sFile.'<br />';
echo 'Regel: '.$iLine.'<br />';
if($iLevel == 256)
{
echo 'Script wordt gestopt...';
exit();
}
}
set_error_handler('error');
?>
Zoals uit het script blijkt is een parse error niet netjes af te lezen, maar ik neem aan dat je niet een script met een parse error online zet.
Mij lijkt deze lange code vrij overbodig. Gezien het feit dat de volgende code hetzelfde doet, maar dan iets minder mooi: (sorry als ik iemand kwets)
ini_set('display_errors', 'On');
error_reporting(E_ALL);
Nu komt het moeilijke gedeelte hoe zorg je voor een goede error handeling wanneer je probeert te connecten met je db of wanneer je iets probeert uit te lezen uit je db.
<?php
include("ehandeling.php");
$admin = 'Sven';
$connect = mysql_connect ('localhost','root','');
if(!$connect){
die('Could not connect: ' . mysql_error());
}
if(mysql_select_db("my_db", $connect)){
$sql = "INSERT INTO persons (Firstname,Lastname,Age) VALUE ('sven','b','27')";
if(!mysql_query($sql)){
echo 'Error: Could not insert:' . mysql_error();
}
else{
echo 'Data has been logged';
}
}
?>
Klopt dit? Is hier een functie voor te maken? Je moet dus bij elke INSERT, SELECT, UPDATE etc. een error handeling inbouwen?
MvG. Sven