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 :

Connexion à deux bases de données [Archives] [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut Connexion à deux bases de données
    Bonjour,
    j'aimerai pouvoir effectuer deux connexions a une base de donnée (elles sont différentes) dans un même script, et cela en paralèle (c'est à dire pas une après les autres).

    Malheuresement quand j'ouvre une seconde connexion elle semble écraser le première, avez vous une solution ? ((je tourne sous mysql).

    Merci d'avance
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Fais voir ton code.
    Boost ftw

  3. #3
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Il s'agit d'un MOD pour phpBB que je développe donc j'utilise leur classe DBAL, voici l'instance de connexion :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    class sql_db
    {
     
    	var $db_connect_id;
    	var $query_result;
    	var $row = array();
    	var $rowset = array();
    	var $num_queries = 0;
     
    	//
    	// Constructor
    	//
    	function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
    	{
     
    		$this->persistency = $persistency;
    		$this->user = $sqluser;
    		$this->password = $sqlpassword;
    		$this->server = $sqlserver;
    		$this->dbname = $database;
     
    		if($this->persistency)
    		{
    			$this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password);
    		}
    		else
    		{
    			$this->db_connect_id = @mysql_connect($this->server, $this->user, $this->password);
    		}
    		if($this->db_connect_id)
    		{
    			if($database != "")
    			{
    				$this->dbname = $database;
    				$dbselect = @mysql_select_db($this->dbname);
    				if(!$dbselect)
    				{
    					@mysql_close($this->db_connect_id);
    					$this->db_connect_id = $dbselect;
    				}
    			}
    			return $this->db_connect_id;
    		}
    		else
    		{
    			return false;
    		}
    	}
    (...)
    }
    Mon code se résume a faire une nouvelle instance de la classe dans un nouvel objet si la connexion à la seconde base de donnée à été activée :
    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
    function &annuaire_connexion(&$cfg_extern)
    {
    	global $db;
     
    	if (!$cfg_extern['annu_use_extern_db'])
    	{
    		return ($db);
    	}
    	else
    	{
    		$db_annu = new sql_db($cfg_extern['annu_extern_db_server'], $cfg_extern['annu_extern_db_login'], $cfg_extern['annu_extern_db_password'], $cfg_extern['annu_extern_db_name'], FALSE);
    		if(!$db_annu->db_connect_id)
    		{
    		   message_die(CRITICAL_ERROR, "Could not connect to the database");
    		}
    		return ($db_annu);
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $db_annu = annuaire_connexion($cfg_annu_extern);
    donc $db_annu prend soit la valeur de $db, qui est l'instance actuelle, si la double connexion n'est pas activée, soit la valeur du nouvel objet de connexion à la seconde base de donnée.

    Malheuresmeent il semble que l'ID de connexion crée écrase l'ancienne

    Merci d'avance
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    déjà je te conseille de laisser tomber les "@" pour gérer tes erreurs

    revenons à ton problème :
    new_link
    Si un deuxième appel est fait à mysql_connect() avec les mêmes arguments, aucune nouvelle connexion ne sera établie, mais plutôt, l'identifiant de la connexion de la connexion déjà ouverte sera retourné. Le paramètre new_link modifie ce comportement et permet à mysql_connect() de toujours ouvrir une nouvelle connexion, même si mysql_connect() a été appelée avant avec les mêmes paramètres.

    PHP 4.2.0 Ajout du paramètre new_link.
    trouvé sur la page suivante suivante :
    http://php.net/mysql_connect

  5. #5
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par mathieu
    déjà je te conseille de laisser tomber les "@" pour gérer tes erreurs

    revenons à ton problème :
    new_link
    Si un deuxième appel est fait à mysql_connect() avec les mêmes arguments, aucune nouvelle connexion ne sera établie, mais plutôt, l'identifiant de la connexion de la connexion déjà ouverte sera retourné. Le paramètre new_link modifie ce comportement et permet à mysql_connect() de toujours ouvrir une nouvelle connexion, même si mysql_connect() a été appelée avant avec les mêmes paramètres.

    PHP 4.2.0 Ajout du paramètre new_link.
    trouvé sur la page suivante suivante :
    http://php.net/mysql_connect
    (pour les @ il s'agit du code de phpBB je n'y suis pour rien ^^)

    Merci pour l'information !! J'aurais du chercher sur php.net je sais pas pourquoi j'ai pas eu ce reflexe, tu es mon sauveur
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

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

Discussions similaires

  1. [Data] Connexion à deux bases de données
    Par Jack-Ob dans le forum Spring
    Réponses: 7
    Dernier message: 23/06/2009, 17h05
  2. [MySQL] Connexion à deux bases de données
    Par bourbita.thameur dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/04/2009, 12h23
  3. Connexion à deux bases de données
    Par nbinot dans le forum JDBC
    Réponses: 7
    Dernier message: 29/10/2008, 15h46
  4. [MySQL] Connexion à deux bases de données sur la même page !
    Par Mike91 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 13/06/2008, 10h27
  5. Réponses: 13
    Dernier message: 10/12/2005, 13h34

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