Scripts

Snippet: PDO Exceptions

Hierbij de meest voorkomene exceptions $sqlexceptions = array( // let op dit zijn niet alle foutmeldingen, alleen de meest voorkomende '1146'=>'de bevraagde tabel bestaat niet', '1011'=>'het record kan niet verwijderd worden', '1015'=>'het record kan niet gelocked worden', '1020'=>'occurence op het scherm komt niet overeen met record in de database. Graag eerst verversen', '1022'=>'het record bestaat reeds in de database en kan daarom niet worden opgeslagen', '1027'=>'het record wordt al bewerkt op dit moment', '1029'=>'de bevraagde view bestaat niet', '1032'=>'het gevraagde record kan niet gevonden worden', '1036'=>'deze tabel kan niet bewerkt worden', '1037'=>'de server heeft onvoldoende geheugen beschikbaar', '1038'=>'de server heeft onvoldoende geheugen beschikbaar', '1040'=>'er zijn teveel connecties open', '1041'=>'de server heeft onvoldoende geheugen beschikbaar', '1044'=>'de gebruikte authenticatie gegevens zijn onjuist' , '1045'=>'de gebruikte authenticatie gegevens zijn onjuist' , '1046'=>'er is geen database geselecteerd' , '1048'=>'er wordt geprobeerd een lege waarde in een verplicht veld te schrijven', '1049'=>'de database is niet bekend', '1051'=>'de gevraagde tabel bestaat niet', '1052'=>'een kolom wordt twee keer gevraagd', '1053'=>'de server wordt afgesloten', '1054'=>'de gevraagde kolom bestaat niet', '1055'=>'er worden gegevens van een groep gevraagd, dit is niet duidelijk' , '1056'=>'er worden gegevens van een groep gevraagd, dit is niet duidelijk' , '1057'=>'er worden gegevens van een groep gevraagd, dit is niet duidelijk' , '1058'=>'het aantal toe te voegen gegevens klopt niet' , '1060'=>'een kolom wordt dubbel gevraagd' , '1062'=>'deze entry komt al voor in de database, u kunt u wachtwoord opnieuw opvragen', '1064'=>'er gaat iets fout met opslaan de beheerder is op de hoogte gesteld', '1065'=>'de vraag was leeg', '1074'=>'de gegevens passen niet in het veld', '1077'=>'de server wordt afgesloten', '1079'=>'de server wordt afgesloten', '1099'=>'het record wordt op dit moment bewerkt, probeer het later weer' , '1105'=>'onbekende fout' ); je kunt het als volgt gebruiken ==> zie voorbeeld doe er je voordeel mee en geef het aan als je het beter kunt, onzin vind handig vind Groeten Klaasjan

snippet-pdo-exceptions
<?php 
//hier de array
$sqlexceptions = array(
        // let op dit zijn niet alle foutmeldingen, alleen de meest voorkomende
        '1146'=>'de bevraagde tabel bestaat niet',
        '1011'=>'het record kan niet verwijderd worden',
        '1015'=>'het record kan niet gelocked worden',
        '1020'=>'occurence op het scherm komt niet overeen met record in de database. Graag eerst verversen',
        '1022'=>'het record bestaat reeds in de database en kan daarom niet worden opgeslagen',
        '1027'=>'het record wordt al bewerkt op dit moment',
        '1029'=>'de bevraagde view bestaat niet',
        '1032'=>'het gevraagde record kan niet gevonden worden',
        '1036'=>'deze tabel kan niet bewerkt worden',
        '1037'=>'de server heeft onvoldoende geheugen beschikbaar',
        '1038'=>'de server heeft onvoldoende geheugen beschikbaar',
        '1040'=>'er zijn teveel connecties open',
        '1041'=>'de server heeft onvoldoende geheugen beschikbaar',
        '1044'=>'de gebruikte authenticatie gegevens zijn onjuist' ,
        '1045'=>'de gebruikte authenticatie gegevens zijn onjuist' ,    
        '1046'=>'er is geen database geselecteerd' ,    
        '1048'=>'er wordt geprobeerd een lege waarde in een verplicht veld te schrijven',
        '1049'=>'de database is niet bekend',
        '1051'=>'de gevraagde tabel bestaat niet',
        '1052'=>'een kolom wordt twee keer gevraagd',
        '1053'=>'de server wordt afgesloten', 
        '1054'=>'de gevraagde kolom bestaat niet',   
        '1055'=>'er worden gegevens van een groep gevraagd, dit is niet duidelijk'  ,
        '1056'=>'er worden gegevens van een groep gevraagd, dit is niet duidelijk'  ,    
        '1057'=>'er worden gegevens van een groep gevraagd, dit is niet duidelijk'  ,
        '1058'=>'het aantal toe te voegen gegevens klopt niet'  ,  
        '1060'=>'een kolom wordt dubbel gevraagd'  ,  
        '1062'=>'deze entry komt al voor in de database, u kunt u wachtwoord opnieuw opvragen',
        '1064'=>'er gaat iets fout met opslaan de beheerder is op de hoogte gesteld',
        '1065'=>'de vraag was leeg',
        '1074'=>'de gegevens passen niet in het veld',
        '1077'=>'de server wordt afgesloten',
        '1079'=>'de server wordt afgesloten',  
        '1099'=>'het record wordt op dit moment bewerkt, probeer het later weer'  ,
        '1105'=>'onbekende fout'
        

        );

// de functie

function catch_fouten($foutmelding){
    
    global $sqlexceptions;
    global $e;
    // $fout is een tweede verbinding met een aprarte user
    global $fout;
    // de normale verbinding nodig voor het terugdraaien
    global $db;
    // uiteraard terugdraaien want er gaat iets fout
    $db->rollBack();
    
    //kijken of de fout voorkomt
                if(array_key_exists($e->errorInfo[1],$sqlexceptions)){
                    // dan tonen we bijbehorende fout
                       $melding ='het volgende ging fout: '.$sqlexecptions[$e->errorInfo[1]].'<br>';
                       // en sturen een mailtje
                       swiftmail('[email protected]',$e->getmessage().'fout:<pre>'.$e->errorInfo[1].'</pre>','foutje bedankt');
                       //  we loggen alle fouten in de db
                       if($fout){ // kijken of de db verbonden is
                       
                       $sqlletje = "INSERT into fouten(gebruiker_id,eind_gebruikerid, fout, wanneer)
                              VALUES(:gebruiker,:eindgebruiker,:fout, NOW())";  
                       $stmtje = $fout->prepare($sqlletje);
                       $stmtje ->bindValue(':gebruiker',$_SESSION['gebruikerid']);
                       $stmtje ->bindValue(':eindgebruiker',$_SESSION['eingebruikerid']);
                       $stmtje ->bindValue(':fout',$e->getmessage());
                       $stmtje ->execute();
                       
                       }
                       else {
                           
                           // loggen in bestand
                       }       

                }
               else {
                   // we weten niet precies wat er fout gaat
                   $melding ='er ging iets fout de beheerder is op de hoogte gesteld'.$e->errorInfo[1];
                   swiftmail('[email protected]',$e->getmessage().'fout:<pre>'.$e->errorInfo[1].'</pre>','foutje bedankt');  
                   //  we loggen alle fouten in de db
                   if($fout){ // kijken of de db verbonden is
                   
                   $sqlletje = "INSERT into fouten(gebruiker_id,eind_gebruikerid, fout, wanneer)
                          VALUES(:gebruiker,:eindgebruiker,:fout, NOW())";
                   $stmtje = $fout->prepare($sqlletje);
                   $stmtje ->bindValue(':gebruiker',$_SESSION['gebruikerid']);
                   $stmtje ->bindValue(':eindgebruiker',$_SESSION['eingebruikerid']);
                   $stmtje ->bindValue(':fout',$e->getmessage());
                   $stmtje ->execute();
                   }
                   else{
                       
                       // we loggen in bestand
                   }
               
               
                    
                
               } 

    echo $melding;
}
// hieronder een try / catch waarin het gebruikt wordt.
try {

$sql-> uitvoeren();

}
catch(PDOException $e)
	{
				 catch_fouten($e);   

		
	} 
}
?>

Reacties

0
Nog geen reacties.