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

PHP & Base de données Discussion :

Comment se connecter sur 2 BD en même temps ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 68
    Points
    68
    Par défaut Comment se connecter sur 2 BD en même temps ?
    Bonjour,

    Dans une page php où je me connecte à ma BD, j'aurais besoin de me connecter à une autre BD tout en gardant la 1ère connexion.

    [1er cas]
    Actuellement, pour la phase de developpement, ces 2 BD se trouve sur ma machine locale et sur le même server Mysql.
    Quand je tente de me connecter à la deuxième BD ça me coupe la connexion de la première.
    Comment faire?
    Faut-il installé un 2ème server Mysql sur ma machine locale pour simuler le [2ème cas]?

    [2ème cas]
    En fait, ces 2 BD seront installés sur 2 servers physiques différents (donc sur 2 servers Mysql différents).
    Comment faire pour me connecter sur une BD qui se trouve sur un autre server tout en gardant ma connexion à ma BD locale?


    Si je n'ai pas été claire, n'hésitez pas à me le faire savoir.
    Merci beaucoup pour votre aide.

    Cassy.

  2. #2
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    suffit d'avoir 2 variables, une pour chaque connexion au serveur MysqL

    $var1 = mysql_connect(.....);// 1er serveur
    $var2 = mysql_connect(.....);// 2eme serveur

    tu peux avoir une infinité de ressources ouvertes vers plusieurs serveurs ... il n'y a pas de limitations.

    par contre avoir X ressources pour le meme serveur mais pour des BD différentes n'a aucune utilité pour les languages de base de données que je connais puisque tu peux directement choisir la BD dans la requete, ex :

    $stReq = 'select * from base.table'

  3. #3
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    je suis surpris du comportement de ton algo.

    Pour ma part, je préconiserais un code comme celui-ci

    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
    16
    17
     
     
    $connexion1=mysql_connect('SERVER1','login','mot_de_passe') 
                  or die('erreur de connexion sur le serveur 1: '. mysql_error());
    $connexion2=mysql_connect('SERVER2','login2','mot_de_passe2') 
                  or die('erreur de connexion sur le serveur 2: '. mysql_error());
     
    mysql_select_db('foo', $connexion1);
        or die('erreur de sélectionner la base sur le serveur 1: '. mysql_error());
    mysql_select_db('foo', $connexion2);
        or die('erreur de sélectionner la base sur le serveur 1: '. mysql_error());
     
    $result1 = mysql_query('SELECT * FROM WHERE 1=1',$connexion1) 
       or die('la requête à échouéle serveur1: '. mysql_error());
    $result2 = mysql_query('SELECT * FROM WHERE 1=1',$connexion2)
      or die('la requête à échouéle serveur2: '. mysql_error());
    ;
    PS, vous avez remarqué la bourde sur la page mysql_query() de la diocumentation PHP ?

  4. #4
    Membre régulier Avatar de NeoMan
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 171
    Points : 76
    Points
    76
    Par défaut
    Pour la connexion à une base de données MySQL tu devrais avoir un code similaire à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $Connexion = mysql_connect(DATABASE_HOST, DATABASE_LOGIN, DATABASE_PASSWORD) or die("Connexion impossible avec le serveur !);
    mysql_select_db(DATABASE_NAME, $Connexion)) or die("Base de données introuvable sur le serveur ! ");
    Dans ce cas la variable $Connexion est la variable de référence pour cette connexion.

    Pour deux connexion en parallèle tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $Connexion_Local = mysql_connect(DATABASE_LOCAL_HOST, DATABASE_LOCAL_LOGIN, DATABASE_LOCAL_PASSWORD) or die("Connexion impossible avec le serveur local !);
    mysql_select_db(DATABASE_LOCAL_NAME, $Connexion)) or die("Base de données introuvable sur le serveur local ! ");
     
    $Connexion_distant = mysql_connect(DATABASE_DISTANT_HOST, DATABASE_DISTANT_LOGIN, DATABASE_DISTANT_PASSWORD) or die("Connexion impossible avec le serveur distant !);
     mysql_select_db(DATABASE_DISTANT_NAME, $Connexion)) or die("Base de données introuvable sur le serveur distant ! ");
    aussi pour éxecuter un requête sur la connexion locale il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql_db_query(DATABASE_LOCALE_NAME, $sql, $Connexion_Locale);
    et pour la connexion distante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql_db_query(DATABASE_DISTANT_NAME, $sql, $Connexion_Distant);
    Reste à bien déterminer les valeurs des constantes DATABASE_*_*...
    J'espère avoir répondu à tes questions.

    @++

    NeoMan

  5. #5
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Copier-coller trop violent Neoman
    Pour les deux mysql_select_db (dans le deuxième bloc de code) , tu as oublié de remplacer le lien $Connexion par respectivement $Connexion_local, $connexion_distant.

    PS : Grillé de 6 minutes

  6. #6
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 68
    Points
    68
    Par défaut
    Merci pour vos réponses!

    Est-ce que...

    mysql_db_query(DATABASE_LOCALE_NAME, $sql, $Connexion_Locale);
    mysql_db_query(DATABASE_DISTANT_NAME, $sql, $Connexion_Distant);

    est remplaçable par:

    mysql_query($sql, $Connexion_Locale);
    mysql_query($sql, $Connexion_Distant);

    ou je suis obligé d'utiliser mysql_db_query?
    Merci.

  7. #7
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 68
    Points
    68
    Par défaut
    bon apparement on est obligé d'utiliser mysql_db_query en spécifiant le nom de la bd en 1er paramètre.

    Merci pour votre aide.
    mon problème est resolu.

  8. #8
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    mysql_db_query est déclaré obsolete, donc tu peux completement le zapper

    comme je l'indiquais, tu n'as aucune obligation de declarer la base puisque tu peux le faire dans la requete.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $stReq = 'SELECT * FROM base.table WHERE col=1';
    mysql_query($stReq);

  9. #9
    Membre régulier Avatar de NeoMan
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 171
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par Lorenzo77
    comme je l'indiquais, tu n'as aucune obligation de declarer la base puisque tu peux le faire dans la requete.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $stReq = 'SELECT * FROM base.table WHERE col=1';
    mysql_query($stReq);
    Cela ne fonctionne pas dans son cas puisqu'il y a deux serveurs différents donc aussi deux authentifications différentes. Et je pense pas que MySQL permette de faire comme SQL Serveur des openrowset (comprendre des requête distante).
    Donc il est obligé de passé par mysql_db_query s'il veut gérer deux connexions en parallèle...

    @++

    NeoMan

  10. #10
    Membre régulier Avatar de NeoMan
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 171
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par Alexandre T
    Copier-coller trop violent Neoman
    Pour les deux mysql_select_db (dans le deuxième bloc de code) , tu as oublié de remplacer le lien $Connexion par respectivement $Connexion_local, $connexion_distant.

    PS : Grillé de 6 minutes
    Oups... Bon je laisse comme ça, depuis il y a prescription...

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

Discussions similaires

  1. Comment se connecter sur un site web?
    Par carnifex dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 25/06/2017, 17h00
  2. Réponses: 1
    Dernier message: 14/08/2012, 12h12
  3. comment se connecter sur Mandriva 2008 ?
    Par DBA_OCP dans le forum Mandriva / Mageia
    Réponses: 1
    Dernier message: 30/01/2008, 18h46
  4. [C#/XMLHttp] Comment se connecter sur hotmail ?
    Par tomperso dans le forum C#
    Réponses: 1
    Dernier message: 25/08/2006, 17h23

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