Publicidade (Anuncie Aqui)

Trabalhando com mais de um banco de dados (MySQL) no PHP

Trabalhando com mais de um banco de dados (MySQL) no PHP

Hoje vi que há pouco material sobre como fazer o PHP conectar-se a dois servidores/bancos diferentes do MySQL… Então vamos direto ao ponto:

<?php
	// Primeiro servidor
	$banco1 = mysql_connect('127.0.0.1', 'root', '');
	mysql_select_db('banco', $banco1);

	// Segundo servidor
	$banco2 = mysql_connect('127.0.0.2', 'root', '');
	mysql_select_db('banco', $banco2);

	// Terceiro servidor
	$banco3 = mysql_connect('127.0.0.3', 'root', '');
	mysql_select_db('banco', $banco3);

	// ...

	// Consulta no 1° banco
	$sql1 = mysql_query('SELECT * FROM `noticias`', $banco1);
	// ... processa os dados ...

	// Consulta no 2° banco
	$sql2 = mysql_query('SELECT * FROM `noticias`', $banco2);
	// ... processa os dados ...

	// Consulta no 3° banco
	$sql3 = mysql_query('SELECT * FROM `noticias`', $banco3);
	// ... processa os dados ...
?>

Espero que tenham gostado! :)

Você também vai gostar de ler:

Postado em MySQL, PHP, Tutoriais

Com as tags , , , , , , ,

Escrito por Thiago Belem

Gostou desse artigo?

Não se esqueça de assinar o RSS e divulgue-o para o mundo:

View Comments

  1. weber disse:

    Ola, nao estou conseguindo obter resultado…

    preciso fazer um insert na tabela A ( banco de dados remoto, locaweb )
    utilizando os dados da select da tabela B ( bando de dados local )

    como proceder ?

  2. oswaldo disse:

    Olá Thiago, Boa Tarde.

    Parabéns pelo site.

    Estou precisando muito de trabalhar com consultas em bancos de dados diferentes em uma mesma pagina. Esse seu artigo me ajudou bastante, mas estou com um problema.
    Fiz as 3 conexões e fiz as 3 impressões em tela, conforme abaixo

    O problema, é que o resultado na tela, é somente da ultima consulta, o $db3. As três colunas mostram o mesmo resultado.

    O que fiz de errado? Pode me ajudar?

    Agradeço a atenção antecipadamente.

    Atenciosamente,

    Oswaldo

    • Thiago Belem disse:

      @oswaldo
      Se os três bancos estão no mesmo servidor você pode colocar o nome do banco na frente do nome da tabela, assim:

      SELECT * FROM `banco1`.`noticias` WHERE 1 = 1

      Isso resolve?

    • oswaldo disse:

      ao fazer isso, deu erro nas linhas onde chamo os fetch_array

      as consultas ficaram assim

      $sql1 = mysql_query(‘SELECT * FROM `banco1`.`nome`’);
      $sql2 = mysql_query(‘SELECT * FROM `banco2`.`nome`’);
      $sql3 = mysql_query(‘SELECT * FROM `banco3`.`nome`’);

    • Thiago Belem disse:

      @Oswaldo
      Ai você precisa verificar o seu banco, tabela e código PHP… Dessa forma (`banco1`.`nome`) eu sei que funciona :)

    • oswaldo disse:

      Thiago, já dei uma olhada geral mas nao to conseguindo achar o erro.

      vou te mandar o codigo pra vc dar uma olhada.. é só teste, coisinha bem simples mesmo.

      http://www.statusmodajovem.com.br/3bancos.txt

      Veja se pode, claro, dar uma olhada e me dar uma possível força nisso ai.
      Te agradeço desde já.

    • Thiago Belem disse:

      @Oswaldo
      Infelizmente não tenho como te ajudar, parece um problema com o seu sistema/instalação/servidor.

    • oswaldo disse:

      ok, de qualquer forma, agradeço.
      Vou upar para o server e fazer o teste lá, já que localhost não tá funfando..
      Vlw e mais uma vez, parabéns pelo site.

  3. fbmarques disse:

    Olá, Thiago, agora, como que eu faço para poder fazer uma consulta simultanea com dois bancos?, teria como você dar um exemplo?

    Grato pela atenção!!!

    • Thiago Belem disse:

      @fbmarques
      A consulta precisaria envolver o nome do banco ao lado da tabela, mais ou menos assim:
      SELECT * FROM `banco1`.`tabela` AS a INNER JOIN `banco2`.`tabela` AS b ON a.`id` = b.`id`

    • Alessandro disse:

      Olá Thiago. Parabéns pelo material!! Ótimas orientações!!
      Você disponibilizou um exemplo de consulta envolvendo dois bancos mysql distintos, mas em um mesmo servidor. Como seria uma consulta similar, mas com os bancos em servidores distintos?! É possível?
      Aguardo seu retorno.

    • Thiago Belem disse:

      @Alessandro
      O post fala exatamente sobre isso… Usar bancos diferentes em servidores diferentes. :)

  4. Victor disse:

    Isso é muito prático e tem muita gente que não sabe que isso é possível. Boa dica! Uma sugestão de pauta relacionado a desempenho do Banco de Dados, tu podia escrever algo sobre triggers e índices no MySQL, não se encontra bons textos sobre isso por aí. Tem muito programador que não sabe o quanto se pode ganhar em desempenho usando bons índices e fazendo parte da aplicação direto no BD. Valeu t+

  5. Bob disse:

    simples e útil

  6. Joabe disse:

    Bom cara…bastante interessante muito útil..

blog comments powered by Disqus