Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565

    Gestire 2 database insieme

    Salve a tutti,

    sto sviluppando una piccola classe personale, per gestire un db mysql, ma ho un problema.

    Io ho la necessità di interagire, nella stessa pagina, con 2 database diversi, che potrebbero persino risiedere su due server diversi. Pensavo che bastasse istanziare 2 volte la classe, con parametri di connessione e db diversi, ma non funziona proprio così...

    Praticamente la query che eseguo, tengono conto solo dell'ultimo mysql_select_db() (cosa che avviene all'interno della classe) eseguito, cioè se istanzio una classe verso il db1, e poi una classe verso db2, anche l'istanza per db1, seleziona il db2. Questo è un grosso problema, poichè chiaramente le query che sono destinate a db1, finisco a db2.

    Ci tengo a precisare che sia per la funzione mysql_select_db(), che mysql_query(), imposto come secondo parametro la risorsa, cioè la connessione a cui devono riferirsi ( $connessione = mysql_connect(bla bla) ).

    Come posso risolvere questo problema?
    Nulla

  2. #2
    Probabilmente l'errore è nel modo in cui crei le due istanze, perchè questo lavoretto lo uso spesso e non ho mai avuto problemi.
    Puoi postare il pezzo di codice dove crei le istanze e le parti di codice della classe che esegue le connessioni al db?


  3. #3
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565
    Certo

    Così la istanzio:

    Codice PHP:

    $sourcedb 
    = new dbClass($nomehost$nomeuser$password$originenomedb);

    $targetdb = new dbClass($nomehost$nomeuser$password$destinazionenomedb); 
    la classe è questa

    Codice PHP:

    class dbClass {
        
        private 
    $hostname "localhost";
        private 
    $username "root";
        private 
    $password "";
        public 
    $dbname "database";
        
        private 
    $connection;
        
        function 
    __construct($hostname ,$username ,$password$dbname$nome) {
            
            
    $this->hostname $hostname;
            
            
    $this->username $username;
            
            
    $this->password $password;
            
            
    $this->dbname $dbname;
            
            
    $this->connection mysql_connect($hostname,$username,$password);
            
            
    mysql_select_db($dbname,$this->connection) or die (mysql_error());
        }
        
        public function 
    query($query) {
            
            
    $result mysql_query($query$this->connection) or die (mysql_error());
            
            return 
    $result;
        }

    Nulla

  4. #4
    Intanto nella funzione usi 5 parametri ma ne passi 4, il che può creare problemi.
    Poi, nella fase di connessione (__construct) assegni $this->dbname = $dbname; ma usi $dbname ( mysql_select_db($dbname,$this->connection) )
    Ultima cosa, prova usando @mysql_connect passando anche il dbname
    Codice PHP:
    $this->connection = @mysql_connect$this->hostname$this->username$this->password$this->dbname ); 
    e magari inserisci anche un controllino
    Codice PHP:

    if ( ! $this->connection ) {
        die ( 
    mysql_connect_error( ) );
        } 

  5. #5
    Utente di HTML.it L'avatar di Electro
    Registrato dal
    Dec 2003
    Messaggi
    565
    Originariamente inviato da Dascos
    Intanto nella funzione usi 5 parametri ma ne passi 4, il che può creare problemi.
    Poi, nella fase di connessione (__construct) assegni $this->dbname = $dbname; ma usi $dbname ( mysql_select_db($dbname,$this->connection) )
    Ultima cosa, prova usando @mysql_connect passando anche il dbname
    Codice PHP:
    $this->connection = @mysql_connect$this->hostname$this->username$this->password$this->dbname ); 
    e magari inserisci anche un controllino
    Codice PHP:

    if ( ! $this->connection ) {
        die ( 
    mysql_connect_error( ) );
        } 
    Ti ringrazio ora funziona correttamente. Il 5 parametro avevo dimenticato di cancellarlo dopo alcune prove che avevo fatto.

    Ma esattamente, cosa è cambiato ponendo la @ davanti la funzione?
    Nulla

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.