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 :

mysql_query sur 2 bases [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 42
    Par défaut mysql_query sur 2 bases
    salut à tous,
    voià mon probleme: j'ai 2 bases de donnés base1 et base2. je me connecte à ces 2 bases par l'intermédiaire de ces 2 fonctions:
    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
    18
    19
    function db_connect()
    {	$servername='localhost';
    	$dbname='base1';
    	$login='root';
    	$password='';
    	$dbh=@mysql_connect($servername,$login,$password) or die ("Probleme de connexion");
    	@mysql_select_db($dbname,$dbh) or die("Probleme dans selection base");
    	return $dbh;
    };
     
    function db_connect2()
    {	$servername='localhost';
    	$dbname='base2 ';
    	$login='root';
    	$password='';
    	$dbh=@mysql_connect($servername,$login,$password) or die ("Probleme de connexion");
    	@mysql_select_db($dbname,$dbh2) or die("Probleme dans selection base");
    	return $dbh;
    };
    et j'essaie de récuperer les donné par ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    db_connect();
    db_connect2();
    $sql="SELECT  base1.salarie.nom
    FROM base1.salarie, base2.mission
    WHERE base1.salarie.matricule=base2.mission.matricule'";
    $result=@mysql_query($sql);
    if($result)
    {
    	while($ligne=mysql_fetch_row($result))
    		{
    		echo $ligne[0];
    		}
    }
    et ca ne marche pas pourtant la requette marche tres bien mais le probleme est au niveau du mysql_query. Comment puis-je executer cette requette?

    je vous remercie d'avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Par défaut
    Citation Envoyé par botambaoaks
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $dbh=@mysql_connect($servername,$login,$password) or die ("Probleme de connexion");
    	@mysql_select_db($dbname,$dbh2) or die("Probleme dans selection base");
    Ne serait-ce pas dans dbh/dbh2 ?

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Les fonctions sont mal utilisées pour l'ouverture des connections MySQL. En effet, les variables utilisées dans les fonctions ont une portée limitée à cette dernière. Il y existe plusieurs solutions pour "contourner" cela et vous semblez avoir opté pour le retour du résultat que vous n'utilisez pas après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $db1 = db_connect();
    $db2 = db_connect2();
    Et ne pas oublier de préciser $db1 ou $db2 comme deuxième paramètre à la fonction mysql_query.

    Il existe d'autres solutions :
    • utiliser dans vos requêtes nom_base_de_données.nom_table à la place de nom_table (l'une des deux connections ne sera plus nécessaire)
    • utiliser un fichier d'en-tête inclus dans vos pages pour l'initialisation des connections MySQL
    • ...



    Julp.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 42
    Par défaut
    merci, vous m'avez beaucoup aider.
    Voici comment j'ai fait d'apres ce que vous m'avez dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    include("fonctions.php");//fichier contenant la fonction db_connect()
    $db=db_connect();
    $sql="SELECT base1.salarie.nom
    FROM base1.salarie, base2.mission
    WHERE base1.salarie.matricule=base2.mission.matricule";
    $result=@mysql_query($sql, $db);
    if($result)
    {
    	while($ligne=mysql_fetch_row($result))
    		{
    		echo $ligne[0];
    		}
    }

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

Discussions similaires

  1. Connexion SYSDBA sur une base ou une autre
    Par jack554 dans le forum Administration
    Réponses: 11
    Dernier message: 20/04/2004, 17h11
  2. Filtre sur une base Paradox
    Par mika dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/03/2004, 11h51
  3. Alter user sur une base distante
    Par bilo2000 dans le forum Administration
    Réponses: 13
    Dernier message: 09/03/2004, 17h18
  4. calcul d'un point sur la base d'un cone
    Par Admin dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 18/11/2003, 21h18
  5. [Crystal] Performance sur grosses base de données
    Par Nico118 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 14/11/2003, 15h27

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