Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como você se conecta a vários bancos de dados MySQL em uma única página da Web?


Aviso: mysql_xx funções estão obsoletas desde o php 5.5 e removidas desde o php 7.0 (veja http://php.net/ manual/intro.mysql.php ), use mysqli_xx funções ou veja a resposta abaixo de @Troelskn

Você pode fazer várias chamadas para mysql_connect() , mas se os parâmetros forem os mesmos, você precisa passar true para o '$new_link ' (quarto) parâmetro, caso contrário, a mesma conexão é reutilizada. Por exemplo:
$dbh1 = mysql_connect($hostname, $username, $password); 
$dbh2 = mysql_connect($hostname, $username, $password, true); 

mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);

Em seguida, para consultar o banco de dados 1, passe o primeiro identificador de link:
mysql_query('select * from tablename', $dbh1);

e para o banco de dados 2 passe o segundo:
mysql_query('select * from tablename', $dbh2);

Se você não passar um identificador de link então será usada a última conexão criada (neste caso a representada por $dbh2 ) por exemplo.:
mysql_query('select * from tablename');

Outras opções

Se o usuário do MySQL tiver acesso aos dois bancos de dados e eles estiverem no mesmo host (ou seja, ambos os bancos de dados estiverem acessíveis a partir da mesma conexão), você poderá:
  • Mantenha uma conexão aberta e chame mysql_select_db() para alternar conforme necessário. Não tenho certeza se esta é uma solução limpa e você pode acabar consultando o banco de dados errado.
  • Especifique o nome do banco de dados ao fazer referência a tabelas em suas consultas (por exemplo, SELECT * FROM database2.tablename ). Isso provavelmente será difícil de implementar.

Leia também a resposta do troelskn porque essa é uma abordagem melhor se você puder usar o PDO em vez das extensões mais antigas.