J'ai testé un code basé sur l'exemple que je t'avais donné et cela fonctionne parfaitement.
tu as peut-être une erreur de syntaxe ici:
(à la place des xxx)
$bdd = new PDO('mysql:host=xxxx', 'xxx', 'xx');
Tu peux aussi tester comme ceci:
(On peut aussi utiliser catch(PDOException $e))
$pseudo = 'pseudo';
$modele = 'modele';
$chevaux = 'chevaux';
$contact = 'contact';
$choix = 'choix';
try {
$bdd = new PDO('mysql:host=xxxx', 'xxx', 'xx');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$req = $bdd->prepare('INSERT INTO `voiture`(`pseudo`, `modele`, `chevaux`, `contact`, `choix`) VALUES(?, ?, ?, ?, ?)');
$req->execute(array($pseudo, $modele, $chevaux, $contact, $choix));
echo 'enregistrement pris en compte.';
$bdd = null;
} catch(PDOException $e) {
echo 'Erreur: ' . $e->getMessage();
}
Mais suivant mes tests, les erreurs (produites manuellement pour les tests) retournées par l'exception que ce soit à la connexion, dans la requête ou même à ces deux endroits sont de type SQL.
Que ce soit avec
catch(PDOException $e) ou
catch(Exception $e) d'ailleurs.
Et encore une fois -> aucun bug
CF:
http://dev.mysql.com/tech-resources/art ... l-pdo.html
Autre méthode:
function exceptionHandler($e) {
echo 'Erreur: ' . $e->getMessage();
}
$pseudo = 'pseudo';
$modele = 'modele';
$chevaux = 'chevaux';
$contact = 'contact';
$choix = 'choix';
set_exception_handler('exceptionHandler');
$bdd = new PDO('mysql:host=xxxx', 'xxx', 'xx');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$req = $bdd->prepare('INSERT INTO `voiture`(`pseudo`, `modele`, `chevaux`, `contact`, `choix`) VALUES(?, ?, ?, ?, ?)');
$req->execute(array($pseudo, $modele, $chevaux, $contact, $choix));
echo 'enregistrement pris en compte.';
$bdd = null;