Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-08-2010 17:07:38

EricS
Membre
Date d'inscription: 15-04-2009
Messages: 60

[1.10]select db

Bonjour,

J'ai dans mon bootstrap :

Code:

        $params = array
            (
            'host' => 'localhost',
            'username' => 'root',
            'password' => 'root',
            'dbname' => 'bdd1'
        );

        try {
            $db = Zend_Db::factory('PDO_MYSQL', $params);
            $db->getConnection();
            
            Zend_Db_Table::setDefaultAdapter($db);

            Zend_Registry::set('db', $db);
            
        } catch (Zend_Db_Adapter_Exception $e) {
            echo $e->getMessage();
        }

Maintenant je voudrais dans une autre partie de mon appli juste changer le nom de la bdd connectée sans toucher aux params (host, login, mdp), equivalent à mysql_select_db().

Quelque chose comme ça (dans l'esprit) :

Code:

$db = Zend_Registry::get('db');

"$db->selectdb('bdd2');"

Je ne trouve rien pour faire cela simplement.

Merci pour vos réponses.

Hors ligne

 

#2 22-08-2010 11:11:43

Intiilapa
Membre
Date d'inscription: 03-02-2009
Messages: 95

Re: [1.10]select db

Pour moi, même PDO ne permet pas de faire cela. Un adapter correspond à une base, et non à un serveur de BDD. Tu peux développer ton propre Adapter pour MySQL sans PDO. Et là, tu auras accès à cette fonction mysql_select_db(). Je ne te le recommande pas cependant, car il y a un intérêt à utiliser une couche d'abstraction comme PDO. Il faudrait donc mieux que tu appréhendes le problème sous un autre angle.

Tu as justement une ressource MultiDb pour Zend_Application. Cela permet d'avoir accès à plusieurs bases dans une application.
Comme tu ne sembles pas utiliser Zend_Application, tu peux doubler ton code pour avoir une deuxième connexion, et tu la stockes avec une clé db2 par exemple dans le registre. Bien sûr, tu définis une seule instance en tant d'adapter par défaut.

Pour information, tu peux récupérer les paramètres de connexion avec la méthode Zend_Db_Adapter::getConfig() :

Code:

$config = Zend_Registry::get('db')->getConfig();

Hors ligne

 

#3 22-08-2010 14:26:31

EricS
Membre
Date d'inscription: 15-04-2009
Messages: 60

Re: [1.10]select db

Tout d'abord merci pour ta réponse.

J'utilise Zend Application, pour le reste de la config.

Etant le nombre de bdd à la fin (env 70), j'aurais voulu avoir une gestion à part des connections.

Merci pour la piste que tu m'as donnée.

Hors ligne

 

#4 23-08-2010 08:01:24

Intiilapa
Membre
Date d'inscription: 03-02-2009
Messages: 95

Re: [1.10]select db

70 O_o Que fais-tu avec tout ça ? une sauvegarde d'hébergement ?

Qu'entends-tu par une gestion à part ? Tu peux lancer la connexion dans le controller qui t'intéresse, cela n'a pas nécessairement besoin d'être dans le bootstrap. Si non, tu peux faire un tableau avec les dbname, et tu boucles (comme ce que fait la ressource MultiDb au final).

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages