IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Tenter de se connecter à une bdd, puis à une autre ?


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de zarohn
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 148
    Par défaut Tenter de se connecter à une bdd, puis à une autre ?
    Bonjour,

    Voila actuellement je commente/décommente mes deux lignes de connexions à une bdd en fonction de si je suis en localhost ou sur mon hébergeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try 
    {
       //$bdd = new PDO('mysql:host=localhost;dbname=mabase', 'root', '');
         $bdd = new PDO('mysql:host=sql.hebergeur.com;dbname=mabase', 'monusername', 'monpassword');
    }
    catch(Exception $e)
    {
         die('Erreur de connexion à la BDD : ' . $e->getMessage());
    }
    Je me demandais donc si il y avait un moyen quelconque de faire en sorte de tester de se connecter à localhost, puis ci ça ne marche pas d'essayer de se connecter à l'hebergeur ? Ce qui m'éviterai de commenter ou décommenter mes fichiers avant envoi sur l'hebergeur.

    Merci d'avance

  2. #2
    Membre éclairé Avatar de Code62
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2008
    Messages : 162
    Par défaut
    Salut,

    En cas d'échec de la connexion, PDO lance une "PDOException"; tu peux donc effectuer la tentative de connexion en local dans un premier try, et attrapper l'exception pour lancer la deuxieme connexion:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
        $bdd = new PDO('local');
    } catch (PDOException $e) {
        $bdd = new PDO('hebergeur');
    }

  3. #3
    Membre confirmé Avatar de zarohn
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 148
    Par défaut
    Salut merci beaucoup
    Par contre est ce que je peux faire quelque chose comme ça pour afficher les deux erreurs en cas d’échec des deux tentatives ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    try 
    {
       $bdd = new PDO('mysql:host=localhost;dbname=mabase', 'root', '');
    }
    catch(Exception $e1)
    {
         try 
         {
            $bdd = new PDO('mysql:host=sql.hebergeur.com;dbname=mabase', 'monusername', 'monpassword');
         }
         catch(Exception $e2)
         {
            die('Erreur de connexion aux BDD : <br />' . $e1->getMessage() . '<br />' . $e2->getMessage());
         }
    }
    Et aussi quelle différence entre mettre une Exception ou une PDOException ?
    Merci d'avance

    Edit : Je viens de tester le code ci-dessus, ça marche nickel ! Merci à Code62 pour son aide, je passe le sujet en résolu ...

  4. #4
    Membre éclairé Avatar de Code62
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2008
    Messages : 162
    Par défaut
    1) de rien

    2) oui, tu peux imbriquer les try/catch

    3) fondamentalement dans ce cas-ci ça ne change rien, vu que PDOException étend Exception, et qu'il n'y a, dans ce code là, aucun risque qu'un autre type d'exception soit lancé, mais c'est quand même préférable de façon générale de catcher l'Exception la plus "précise possible"
    par exemple si plus tard tu modifie le code pour charger les parametres de connexion dans un autre fichier, et veux lancer un autre type d'exception en cas d'échec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (!$db_connexion_params) {
        throw new Exception('Echec du chargement des parametres');
    }
    $bdd = new PDO($db_connexion_param);
    Si le chargement des données échoue, l'exception serait catchée par ton code actuel et tu aurais un message disant "Erreur de connexion au db", alors que le probleme serait ailleurs
    en catchant immédiatement la PDOException, tu évites tout risque de problème ultérieur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. importer une table d'une BDD a une autre SQL SERVER 2008
    Par InfOCynO dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/08/2012, 15h05
  3. Réponses: 19
    Dernier message: 14/05/2011, 03h13
  4. Réponses: 15
    Dernier message: 21/10/2009, 13h31
  5. Réponses: 1
    Dernier message: 15/04/2008, 20h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo