Aviso: as mysql_xx
funções estão obsoletas desde o php 5.5 e removidas desde o php 7.0 (consulte http://php.net/manual/intro.mysql.php ), use mysqli_xx
funções ou veja a resposta abaixo em @Troelskn
Você pode fazer várias chamadas para mysql_connect()
, mas se os parâmetros forem os mesmos, será necessário passar true para o $new_link
parâmetro ' ' (quarto), caso contrário, a mesma conexão será 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, a última conexão criada será usada (nesse 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, os dois bancos de dados estiverem acessíveis na mesma conexão), você poderá:
- Mantenha uma conexão aberta e chame
mysql_select_db()
para alternar entre 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 nas suas consultas (por exemplo
SELECT * FROM database2.tablename
). É provável que seja uma dor de implementar.
Leia também a resposta do troelskn, porque essa é uma abordagem melhor se você puder usar o DOP em vez das extensões mais antigas.