par
Dr@ke » 30 mars 2010, 03:54
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;
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:
[i](à la place des xxx)[/i]
[php] $bdd = new PDO('mysql:host=xxxx', 'xxx', 'xx');[/php]
Tu peux aussi tester comme ceci:
[i](On peut aussi utiliser catch(PDOException $e))[/i]
[php]$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();
}[/php]
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 [i]catch(PDOException $e)[/i] ou [i]catch(Exception $e)[/i] d'ailleurs.
Et encore une fois -> aucun bug :wink:
CF:
[url]http://dev.mysql.com/tech-resources/articles/mysql-pdo.html[/url]
Autre méthode:
[php] 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;[/php]