Avec PDO, impossible de récupérer des exceptions en connexion persistante
Nix6800
Messages postés5Date d'inscriptiondimanche 2 mars 2008StatutMembreDernière intervention 2 juin 2008
-
8 avril 2008 à 16:34
Nix6800
Messages postés5Date d'inscriptiondimanche 2 mars 2008StatutMembreDernière intervention 2 juin 2008
-
2 juin 2008 à 14:18
Bonjour.
J'utilise PDO pour me connecter à ma BDD Oracle et j'aimerais utiliser
des connections persistantes en faisant des envoies multiples (avec un
"prepare").
Cela marche très bien mais... les exceptions ne semblent plus être
attrapées par mon catch (que ce soit une erreur de syntaxe ou une
erreur de type de données le script crash au lieu d'afficher l'erreur).
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 8 avril 2008 à 19:19
Hello,
execute() ou prepare() renvoient false en cas d'échec.
Donc :
if(false === $stmt->execute()) {
throw new Exception('erreur dans l\'exécution de la requête préparée');
}
par exemple.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 8 avril 2008 à 20:01
C'est quoi ce else ??
Ce n'est pas ce que je t'ai dit de faire.
try {if(false ($stmt $dbh->prepare("INSERT INTO membres (id, pseudo) VALUES (?, ?)")))) {
throw new Exception('erreur dans l\'exécution de la requête préparée');
}
// bla bla
if(false === $stmt->execute()) {
throw new Exception('erreur dans l\'exécution de la requête préparée');
}
// bla bla
} catch(Exception $e) {
// bla bla
}
$dbh->beginTransaction();
if(false ($stmt $dbh->prepare("INSERTT INTO membres (id, pseudo) VALUES (?, ?)"))) {
throw new Exception('erreur dans l\'exécution de la requête préparée');
}
$stmt->bindParam(1, $id);
$stmt->bindParam(2, $pseudo);
// insertion d'une ligne
$id = '';
$pseudo = 'Jack';
if(false === $stmt->execute()) {
throw new Exception('erreur dans l\'exécution de la requête préparée');
}
// insertion d'une autre ligne avec des valeurs différentes
$id = '';
$pseudo = 'Marchal';
if(false === $stmt->execute()) {
throw new Exception('erreur dans l\'exécution de la requête préparée');
}