Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Hugo Borges_120734

mysqli conexão 2 BD

Recommended Posts

Galera estou com uma dúvida, estou começando a migrar meu sistema que usa mysql para mysqli. O problema e que tenho um arquivo que faz conexão com 2 BD diferentes. E preciso fazer isso usando o método procedural.

 

Estou usando o seguinte código para conexão a 1 BD:

// Conecta-se ao banco de dados MySQL
$mysqli = mysqli_connect($servidor, $usuario, $senha, $banco);



$query = "SELECT id FROM cadastro ORDER by id";
$result = $mysqli->query($query);

while($row = $result->fetch_array(MYSQLI_ASSOC)){

echo''.$row["id"].'<br>';
}

mysqli_close($mysqli);

Como faço para ele se conectar em 2 BD diferentes?

 

No metodo antigo eu uso assim:

$conn1 = mysql_connect("$ip_bd_mysql:$porta_bd_mysql",$login_bd_mysql,$senha_bd_mysql); mysql_select_db($bd_servidor);

$conn2 = mysql_connect("$ip_bd_mysql:$porta_bd_mysql",$login_bd_mysql,$senha_bd_mysql); mysql_select_db($bd_servidor);



$consulta_1 = mysql_query("select * from server_hc where id = '$cod_cliente'",$conn1);
$resultado_1 = mysql_fetch_object($consulta_1);


$consulta_2 = mysql_query("select * from server_hc where id = '$cod_cliente'",$conn2);
$resultado_2 = mysql_fetch_object($consulta_2);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hugo, só uma pergunta antes de eu tentar te responder definitivamente. Você quer fazer uma conexão simultânea a dois bancos distintos (com informações diferentes um do outro) ou eles são os mesmos, porém um serve de backup, caso o outro não esteja rodando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, vamos aos pontos então.

  • Se os bancos estiverem em servidores diferentes: Não tem como.
  • Se você pretende fazer uma única query pra esses dois bancos: Não tem como.

Creio que da mesma forma que estruturou o mysql, você pode estruturar com o mysqli, ou seja:

<?php
   $bancoUm = new mysqli("local", "usuario", "senha", "banco");
   $bancoDois = new mysqli("local", "usuario", "senha", "banco");
?>

Considerando que eles estão no mesmo servidor, então você pode aproveitar do Join com um único connect:

<?php   
   $conn = new mysqli("local", "usuario", "senha", "banco");
   
   $resultado = $conn->query(SELECT campoUm, campoDois FROM bancoUm.tabela JOIN bancoDois.tabela ON algumaCoisa);
?>

Não sei se deu pra entender muito bem (até porque eu me perdi um pouco), mas se não resolver, tento postar outra solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sua ideia e boa, mas eu consegui fazer com bancos de dados em servidores diferentes olha ai.

// Conecta-se ao banco de dados MySQL
$mysqli1 = mysqli_connect($servidor, $usuario, $senha, $banco);



$consulta_servidor = $mysqli1->query("SELECT `id`,`nome` FROM cadastro where id = '24'");
$resultado_servidor = $consulta_servidor->fetch_array(MYSQLI_ASSOC);
$cliente = $resultado_servidor["nome"];

$mysqli2 = mysqli_connect($servidor, $usuario, $senha, $banco);



$consulta_servidor = $mysqli2->query("SELECT `id`,`nome` FROM cadastro where id = '24'");
$resultado_servidor = $consulta_servidor->fetch_array(MYSQLI_ASSOC);
$cliente = $resultado_servidor["nome"];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa!

 

sua ideia e boa, mas eu consegui fazer com bancos de dados em servidores diferentes olha ai.

Esqueci de citar uma coisa hahahahaha Estava falando sobre uma single query, mas curti sua solução, deixarei essa anotada.

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

E preciso fazer isso usando o método procedural.[...]

Querendo ou não, você utilizou a chamada procedural (através de uma função) mas que retorna um objeto.

 

[...]Se os bancos estiverem em servidores diferentes: Não tem como.[...]

Como assim? Estarem em servidores diferentes não implica em problema algum.

 

É mais aconselhável possuir um servidor de arquivos e um servidor diferente para SGBD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segurança: Se por algum acaso/motivo o servidor de arquivos for vulnerável e permitir algum acesso privilegiado, o SGBD está, de certa forma, protegido. Mas isso é ainda discutível, existem N fatores.

 

Segurança 2: Cada um no seu quadrado. O DBA acessa o banco de dados, o developer/deployer o servidor de arquivos.

 

Manutenção: As manutenções podem ser realizadas de forma independente. Atualizações, backup, recovery. Ocorreu o problema em algum servidor, migre-o.

 

Performance: Dedique o servidor para sua finalidade. Sites não são sistemas, mas e-commerces de alta quantidade de acesso, demandam muita performance.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.