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.
$dbh2
o segundo apenas quando necessário? Ter que mudar todas as consultas para esta abordagem ao trabalho provavelmente levaria dias apenas encontrar todos eles ...db_query($query,$db='db1')
e depois atualizar em massa todas as suas consultas de idade paradb_query($query)
seguido por costume atualizar seus entes não-padrão paradb_query($query,'db2')
If the link identifier is not specified, the last link opened by mysql_connect() is assumed.
Se você usa o PHP5 (e deve, já que o PHP4 foi descontinuado), você deve usar o DOP , pois este está lentamente se tornando o novo padrão. Um benefício (muito) importante do PDO é que ele suporta parâmetros vinculados, o que contribui para um código muito mais seguro.
Você se conectaria através do DOP, assim:
(Obviamente, substitua nome do banco de dados, nome de usuário e senha acima)
Você pode consultar o banco de dados da seguinte maneira:
Ou, se você tiver variáveis:
Se você precisar de várias conexões abertas ao mesmo tempo, basta criar várias instâncias do PDO:
fonte
use DATABASENAME
, mas não vejo o ponto?Acabei de simplificar minha vida:
espero que seja útil ... felicidades ...
fonte
Em vez de mysql_connect, use mysqli_connect .
O mysqli é uma funcionalidade para conectar vários bancos de dados ao mesmo tempo.
fonte
mysql_connect
Experimente o código abaixo:
Você pode buscar dados da consulta acima do banco de dados como abaixo
fonte
mysql_select_db
sequer uma vez - também, chamando-o duas vezes sem qualquer outra coisa no meio é inútilEsta é a solução mais óbvia que eu uso, mas lembre-se, se o nome de usuário / senha para o banco de dados for exatamente o mesmo no mesmo host, essa solução sempre estará usando a primeira conexão. Portanto, não se confunda que isso não esteja funcionando nesse caso. O que você precisa fazer é criar 2 usuários diferentes para os 2 bancos de dados e ele funcionará.
fonte
A menos que você realmente precise ter mais de uma instância de um objeto PDO em jogo, considere o seguinte:
Observe a ausência de
dbname=
nos argumentos de construção.Quando você se conecta ao MySQL através de um terminal ou outra ferramenta, o nome do banco de dados não é necessário imediatamente. Você pode alternar entre bancos de dados usando a
USE dbname
instrução por meio doPDO::exec()
métodoÉ claro que você pode incluir isso em uma declaração catch try.
fonte
Você pode usar a sintaxe do MySQLi, o que permitiria lidar melhor com isso.
Defina as conexões com o banco de dados e, sempre que desejar consultar um dos bancos de dados, especifique a conexão correta.
Por exemplo:
Para consultá-los na mesma página, use algo como:
Mudar para o MySQLi dessa maneira irá ajudá-lo.
fonte
Você realmente não precisa
select_db
. Você pode enviar uma consulta para dois bancos de dados ao mesmo tempo. Em primeiro lugar, dar uma bolsa paraDB1
selecionar a partirDB2
deGRANT select ON DB2.* TO DB1@localhost;
. EntãoFLUSH PRIVILEGES;
,. Por fim, você pode fazer uma 'consulta de banco de dados múltiplo' comoSELECT DB1.TABLE1.id, DB2.TABLE1.username FROM DB1,DB2
etc. (não se esqueça de que precisa de acesso 'root' para usar o comando grant)fonte
se você estiver usando o mysqli e tiver dois arquivos db_connection. como o primeiro é
segundo é
SO apenas mude o nome da passagem de parâmetro no mysqli como DB1 e DB2. se você passar o mesmo parâmetro no mysqli suponha que o DB1 nos dois arquivos, o segundo banco de dados não se conectará mais. Então lembre-se de quando você usa duas ou mais conexões, passe nomes de parâmetros diferentes na função mysqli
fonte
fonte