begin process at 2012 05 28 19:27:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

Oracle

 > 

Avec PDO, impossible de récupérer des exceptions en connexion persistante


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Avec PDO, impossible de récupérer des exceptions en connexion persistante

mardi 8 avril 2008 à 16:34:55 | Avec PDO, impossible de récupérer des exceptions en connexion persistante

Nix6800

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).

Mon code est le suivant.


[ Lien ]
try {
    $dbh = new PDO("oci:dbname=//localhost/XE", 'TEST', 'TEST',
        array(PDO::ATTR_PERSISTENT => true));
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
    $dbh->beginTransaction();
       
        $stmt = $dbh->prepare("INSERTT INTO membres (id, pseudo) VALUES (?, ?)");
        $stmt->bindParam(1, $id);
        $stmt->bindParam(2, $pseudo);
 
        // insertion d'une ligne
        $id = '';
        $pseudo = 'Jack';
        $stmt->execute();
 
        // insertion d'une autre ligne avec des valeurs différentes
        $id = '';
        $pseudo = 'Marchal';
        $stmt->execute();
 
    $dbh->commit();
 
} catch (Exception $e) {
        $dbh->rollBack();
    echo "Échec : " . $e->getMessage();
}



Merci d'avance pour votre aide !
mardi 8 avril 2008 à 19:19:43 | Re : Avec PDO, impossible de récupérer des exceptions en connexion persistante

malalam

Administrateur CodeS-SourceS
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.
mardi 8 avril 2008 à 19:52:27 | Re : Avec PDO, impossible de récupérer des exceptions en connexion persistante

Nix6800

Merci pour ta réponse, mais il semble que cela ne fonctionne pas. J'ai mit

<?php
echo 'test';
try {
    $dbh = new PDO("oci:dbname=//localhost/XE", 'TEST', 'TEST',
        array(PDO::ATTR_PERSISTENT => true));
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $dbh->beginTransaction();
   
    if($stmt = $dbh->prepare("INSERT INTO membres (id, pseudo) VALUES (?, ?)")) {
        $stmt->bindParam(1, $id);
    $stmt->bindParam(2, $pseudo);

    // insertion d'une ligne
    $id = '';
    $pseudo = 'Jack';
    $stmt->execute();

    // insertion d'une autre ligne avec des valeurs différentes
    $id = '';
    $pseudo = 'Marchal';
    $stmt->execute();

    $dbh->commit();

}
else{    throw new Exception('erreur dans l\'exécution de la requête préparée');}
} catch (Exception $e) {
    $dbh->rollBack();
    echo "Échec : " . $e->getMessage();
}
?>


Ca crashe de la même manière, même le "echo'test';" ne fonctionne pas quand je met une requète erronée.
mardi 8 avril 2008 à 20:01:22 | Re : Avec PDO, impossible de récupérer des exceptions en connexion persistante

malalam

Administrateur CodeS-SourceS
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
}
mardi 8 avril 2008 à 22:09:46 | Re : Avec PDO, impossible de récupérer des exceptions en connexion persistante

Nix6800

Pardon, j'ai mal inteprété.


J'ai tapé ça :

try {
    $dbh = new PDO("oci:dbname=//localhost/XE", 'TEST', 'TEST',
        array(PDO::ATTR_PERSISTENT => true));
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $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');
}

    $dbh->commit();

} catch (Exception $e) {
    $dbh->rollBack();
    echo "Échec : " . $e->getMessage();
}

Mais j'obtient toujours le même résultat.
mardi 8 avril 2008 à 22:42:14 | Re : Avec PDO, impossible de récupérer des exceptions en connexion persistante

malalam

Administrateur CodeS-SourceS
Il plante où ton script, dans quel cas ?
mercredi 9 avril 2008 à 09:06:08 | Re : Avec PDO, impossible de récupérer des exceptions en connexion persistante

Nix6800

Si j'enlève le second T à INSERT il fonctionne très bien. Mais dès que je le rajoute (une erreur donc) ça me fait crasher apache.
lundi 2 juin 2008 à 14:18:58 | Re : Avec PDO, impossible de récupérer des exceptions en connexion persistante

Nix6800

Quelqu'un aurait il une nouvelle idée ?


Cette discussion est classée dans : id, pseudo, stmt, pdo, dbh


Répondre à ce message

Sujets en rapport avec ce message

id_result ne renvoi rien!! [ par thongthephu ] bijour:Voila dans le code si dessous $id_result ne renvoi rien pourtant tou marche(db ...)session_start(); if($_GET['action'] == 'login') { $pseudo = oh misére o desespoir , bleme de requette [ par CCJ ] bonjour alors que j'etait sur le point de finir le forum sur mon site , un bleme aparut. voici mon code: session_start(); if(isset($_SESSION['Pseudo' comment faire un UPDATE à l'aide de table lier? [ par DoudouBidou ] vala je voudrais mettre à jour une table afin de récupérer les id contenu dans une autre je m'explique :je voudrais faire un truc du genre :UPDATE [ta Besoin d'aide pour les Cookies .... SVP :'( [ par Astalavista ] Alors, j'ai un site en PHP ou il y a une partie mebre. pour securiser un num. ID et le pseudo sont enregistrer dans un cookies de la forme :S determiner un id de session [ par biloutte33 ] bonjour voici mon code pour ma le login d'un membre:  mysql_select_db("informaticman");  if(!mysql_connect) {echo "Connexion impossible à la b Gros proplème de mon forum une boucle!!! [ par ybouane ] salutj'ai un très gros problème dans mon forum ben c'est tres dure a expliquer mais j'essaye.Ben voila j'ai fait une page qui affiche les message ou l Ajouter une méthode à PDO [ par Evangun ] Hello,je me pose une question simple : est-ce qu'on peut ajouter une méthode à une classe "native" comme PDO ? Je n'ai pas trouvé d'info là-dessus. Je procedure stockée avec parametre en sortie avec PDO/MySQL [ par poland_power ] Hello m'sieurs dames, en esperant que l'un de vous puisse m'aider, je vous expose mon soucis. j'ai une procédure stockée nommée avec un parametre de pb pour un id de session [ par biloutte33 ] bonjour, voilà j'aimerais savoir comment retourner l'id attribuer à mon membre qui viens de s'enregistrer dans sa connexion?voici ma page enregistre.p probleme requete d'insertion [ par titigrou ] kikou!!j'ai un problème avec une requete d'insertion que voici: $requete = "INSERT INTO reserver VALUES ('".$reqpseudo['pseudo']."','".$_POST['voiture


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,262 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales