Ir para conteúdo
Fórum Script Brasil
  • 0

[RESOLVIDO] conexao com 2 bancos mysql simultaneos


tiagofontoura

Pergunta

[RESOLVIDO] ola amigos, estou precisando conectar via php em dois bancos mysql, pois preciso de dados das duas bases, alguém teria como me ajudar?

> já tentei criar 2 arquivos "conexao.php" e chamar via include, porem o php conecta em apenas 1(a ultima a ser relacionada).

> tentei tambem criar 2 conexoes dentro do mesmo arquivo "conexao.php", porem dai não conecta em nada.

alguém teria uma luz?

muito obrigado.

Editado por tiagofontoura
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Na própria página do mysql_connect tem isso...

If you are trying to open multiple, separate MySQL connections with the same MySQL user, password, and hostname, you must set $new_link = TRUE to prevent mysql_connect from using an existing connection.

For example, you are opening two separate connections to two different databases (but on the same host, and with the same user and password):

$db1 = mysql_connect($dbhost, $dbuser, $dbpass);

$rv = mysql_select_db($dbname1, $db1);

$db2 = mysql_connect($dbhost, $dbuser, $dbpass);

$rv = mysql_select_db($dbname2, $db2);

At this point, both $db1 and $db2 will have selected the database named by $dbname2.

The workaround is to require that the second MySQL connection is new:

$db1 = mysql_connect($dbhost, $dbuser, $dbpass);

$rv = mysql_select_db($dbname1, $db1);

$db2 = mysql_connect($dbhost, $dbuser, $dbpass, TRUE);

$rv = mysql_select_db($dbname2, $db2);

Now, $db1 should have selected $dbname1, and $db2 should have selected $dbname2.

This has been documented on the mysql_select_db page as well.

Note: This occurs only when the server, username, and password parameters are identical for each mysql_connect statement.

No caso você tem que especificar no mysql_query que link de conexão vai usar, ou seja...

mysql_query("insert/update/delete..........",$db1);
Ou
mysql_query("insert/update/delete..........",$db2);

Link para o comentário
Compartilhar em outros sites

  • 0

ola amigos, estou precisando conectar via php em dois bancos mysql, pois preciso de dados das duas bases, alguém teria como me ajudar?

> já tentei criar 2 arquivos "conexao.php" e chamar via include, porem o php conecta em apenas 1(a ultima a ser relacionada).

> tentei tambem criar 2 conexoes dentro do mesmo arquivo "conexao.php", porem dai não conecta em nada.

alguém teria uma luz?

muito obrigado.

já fiz desta forma, e deu certo:

conexao.php

$db1 = mysql_connect($dbhost, $dbuser, $dbpass);

$rv = mysql_select_db($dbname1, $db1);

$db2 = mysql_connect($dbhost, $dbuser, $dbpass, TRUE);

$rv = mysql_select_db($dbname2, $db2);

mysql_query("insert/update/delete..........",$db1);

porem, se for assim, não funciona:

$sql_1 = "insert/update/delete..........",$db1);

$exec_sql_1 = mysql_query($sql_1,$conexao); OU $exec_sql_1 = mysql_query($sql_1,$conexao,$db1);

alguém poderia me ajudar

Link para o comentário
Compartilhar em outros sites

  • 0

tiagofontoura, só uma dúvida, havia necessidade de abrir um outro tópico para o mesmo problema que você já havia iniciado em outro? Acho que não né? Estou fundindo os dois e espero que você mantenha a discussão apenas nesse, quando ao seu problema, acabei de testar e funciona 100%, vou repassar um exemplo todo mastigado, a única coisa que você tem que alterar são as informações de conexão e os dados das tabelas, mas o exemplo é totalmente funcional.

<?php
$servidor = "localhost";//Geralmente é localhost mesmo
$nome_usuario = "root";//Nome do usuário do mysql
$senha_usuario = ""; //Senha do usuário do mysql
$nome_do_banco = "luciana"; //Nome do banco de dados

$conecta1 = mysql_connect("$servidor", "$nome_usuario", "$senha_usuario", TRUE) or die (mysql_error());
$banco1 = mysql_select_db("$nome_do_banco",$conecta1) or die (mysql_error());


$servidor = "localhost";//Geralmente é localhost mesmo
$nome_usuario = "root";//Nome do usuário do mysql
$senha_usuario = ""; //Senha do usuário do mysql
$nome_do_banco = "tst"; //Nome do banco de dados
$conecta2 = mysql_connect("$servidor", "$nome_usuario", "$senha_usuario", TRUE) or die (mysql_error());
$banco2 = mysql_select_db("$nome_do_banco",$conecta2) or die (mysql_error());


$sql2 = mysql_query("SELECT * FROM uf",$conecta2);

while($monta2 = mysql_fetch_assoc($sql2)){
    echo $monta2['Nome'].'<br>';
}
echo '<hr>';
$sql1 = mysql_query("SELECT * FROM produtos",$conecta1)OR DIE(mysql_error());
while($monta1 = mysql_fetch_assoc($sql1)){
    echo $monta1['produto'].'<br>';
}
?>

Link para o comentário
Compartilhar em outros sites

  • 0

desculpe ter aberto um novo tópico, mas acho q voce não entendeu minha duvida.

se eu executar direto a query ela funciona perfeito(como no seu exemplo), mas se eu monto da seguinte forma:

$sql = "SELECT * FROM tabela";

$exec_sql = mysql_query($sql,$conexao); (o arquvo 'conexao.php' e onde estao os dados do banco e chamo via include).

desta forma não consegui fazer as 2 conexoes. testei tambem da seguinte forma:

$exec_sql = mysql_query($sql,$conexao,$conexao);

mas tambem não funcionou.

teria alguma ideia?

Editado por tiagofontoura
Link para o comentário
Compartilhar em outros sites

  • 0

Primeiramente você deveria consultar sempre o manual, pois nele está o seguinte:

resource mysql_query ( string $query [, resource $link_identifier ] )

Ou seja, mysql_query só permite dois argumentos e não três como você também tentou.

Quanto a sua questão, apesar de saber que funcionaria, testei e funcionou perfeitamente colocando a query fora e só chamando ela por uma variável:

<?php
$servidor = "localhost";//Geralmente é localhost mesmo
$nome_usuario = "root";//Nome do usuário do mysql
$senha_usuario = ""; //Senha do usuário do mysql
$nome_do_banco = "luciana"; //Nome do banco de dados

$conecta1 = mysql_connect("$servidor", "$nome_usuario", "$senha_usuario", TRUE) or die (mysql_error());
$banco1 = mysql_select_db("$nome_do_banco",$conecta1) or die (mysql_error());


$servidor = "localhost";//Geralmente é localhost mesmo
$nome_usuario = "root";//Nome do usuário do mysql
$senha_usuario = ""; //Senha do usuário do mysql
$nome_do_banco = "tst"; //Nome do banco de dados
$conecta2 = mysql_connect("$servidor", "$nome_usuario", "$senha_usuario", TRUE) or die (mysql_error());
$banco2 = mysql_select_db("$nome_do_banco",$conecta2) or die (mysql_error());

$query2 = 'SELECT * FROM uf';
$sql2 = mysql_query($query2,$conecta2);

while($monta2 = mysql_fetch_assoc($sql2)){
    echo $monta2['Nome'].'<br>';
}
echo '<hr>';
$query1 = 'SELECT * FROM produtos';
$sql1 = mysql_query($query1,$conecta1)OR DIE(mysql_error());
while($monta1 = mysql_fetch_assoc($sql1)){
    echo $monta1['produto'].'<br>';
}
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Primeiramente você deveria consultar sempre o manual, pois nele está o seguinte:

resource mysql_query ( string $query [, resource $link_identifier ] )

 

Ou seja, mysql_query só permite dois argumentos e não três como você também tentou.

 

Quanto a sua questão, apesar de saber que funcionaria, testei e funcionou perfeitamente colocando a query fora e só chamando ela por uma variável:

 

 

 
<?php
$servidor = "localhost";//Geralmente é localhost mesmo
$nome_usuario = "root";//Nome do usuário do mysql
$senha_usuario = ""; //Senha do usuário do mysql
$nome_do_banco = "luciana"; //Nome do banco de dados

$conecta1 = mysql_connect("$servidor", "$nome_usuario", "$senha_usuario", TRUE) or die (mysql_error());
$banco1 = mysql_select_db("$nome_do_banco",$conecta1) or die (mysql_error());


$servidor = "localhost";//Geralmente é localhost mesmo
$nome_usuario = "root";//Nome do usuário do mysql
$senha_usuario = ""; //Senha do usuário do mysql
$nome_do_banco = "tst"; //Nome do banco de dados
$conecta2 = mysql_connect("$servidor", "$nome_usuario", "$senha_usuario", TRUE) or die (mysql_error());
$banco2 = mysql_select_db("$nome_do_banco",$conecta2) or die (mysql_error());

$query2 = 'SELECT * FROM uf';
$sql2 = mysql_query($query2,$conecta2);

while($monta2 = mysql_fetch_assoc($sql2)){
    echo $monta2['Nome'].'<br>';
}
echo '<hr>';
$query1 = 'SELECT * FROM produtos';
$sql1 = mysql_query($query1,$conecta1)OR DIE(mysql_error());
while($monta1 = mysql_fetch_assoc($sql1)){
    echo $monta1['produto'].'<br>';
}
?>

 

Bom dia ESerra,

Atualmente estou estagiando em uma empresa e me deparei com este mesmo problema,

pois bem consegui resolver da forma totalmente mastigada que você deixou a disposição. Fiz questão de vir agradecer, Muito Obrigado !

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...