Salut à vous !
Si je fais un try...catch autour de ma connexion et que je fais exprès de foirer ma connexion (ex. mauvais identifiant, mauvais nom de DB, etc.), l'erreur est bien attrappée !
Si je fais un try...catch autour de l'exécution de ma requête et que je fais exprès de foirer la syntaxe de ma requête (ex. nom de champ ou de table inexistant, mauvaise instruction, etc.), l'erreur n'est pas attrapée !
Par contre : si je rajoute la ligne suivante alors l'erreur est correctement attrapée !
Comment est-ce possible ?
Si je fais un try...catch autour de ma connexion et que je fais exprès de foirer ma connexion (ex. mauvais identifiant, mauvais nom de DB, etc.), l'erreur est bien attrappée !
try {
$db_mysql = new PDO($dsn, $user, $password);
} catch(PDOException $e) {
exit('Connexion échouée : '.$e->getMessage());
}
Si je fais un try...catch autour de l'exécution de ma requête et que je fais exprès de foirer la syntaxe de ma requête (ex. nom de champ ou de table inexistant, mauvaise instruction, etc.), l'erreur n'est pas attrapée !
try {
$query = "SELECT blabla FROM blibli";
$result = $db_mysql->query($query);
} catch(PDOException $e) {
exit('Mauvaise syntaxe SQL : '.$e->getMessage());
}
Par contre : si je rajoute la ligne suivante alors l'erreur est correctement attrapée !
$db_mysql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Ce qui est curieux, c'est que dans mon premier exemple, l'erreur est attrapée sans cette ligne ci-dessus...Comment est-ce possible ?