Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
nldj

PHP Abrir duas conexões simultaneamente

Recommended Posts

Atualmente uso ADO para conectar o PHP com meu bd MS-SQL 
 

$conn = new COM ("ADODB.Connection") or die("Nâo foi possível carregar o ADO"); 
$connStr = "PROVIDER=SQLNCLI10;SERVER=".$dbhost.";UID=".$user.";PWD=".$password.";DATABASE=".$db; 
$conn->open($connStr); 



******************************************* 

Para a consulta utilizo a seguinte instrução: 
 

$sql = "select * from tabela "; 
$rs = $conn->execute($sql); 
if(!$rs->EOF){ 
while (!$rs->EOF){ 
$rs->MoveNext(); 
} 
} 
$rs->Close(); 
$rs = null; 


******************************************* 

No entanto, preciso fazer um select union utilizando tabelas distintas de banco de dados diferente: 
 

$sql = "select email banco1.dbo.tabela "; 
$sql = $sql . "union "; 
$sql = $sql . "select email banco2.db o.tabela "; 


******************************************* 

Eu gostaria de saber como faço para estabelecer duas conexões simultaneamente e instanciar a consulta de dois bancos na mesma instrução SQL???

Compartilhar este post


Link para o post
Compartilhar em outros sites

@nldj Na verdade você não pode usar na mesma instrução sql.

 

Você pode abrir quantas conexões quiser e em bancos diferentes.

 

O você você pode fazer é duas conexões, duas consultas  e mesclar os resultados em um array.

Depois disso, você escolhe um dos bancos e cria uma tabela espelho contendo os dados de ambos bancos de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu @DiF

 

Se entendi bem, você sugere que faça isso:

$conn = new COM ("ADODB.Connection") or die("Nâo foi possível carregar o ADO");
$connStr = "PROVIDER=SQLNCLI10;SERVER=".$dbhost.";UID=".$user.";PWD=".$password.";DATABASE=".$db;
$conn->open($connStr);

$sql = "select email banco1.dbo.tabela ";  
$rs = $conn->execute($sql);  
if(!$rs->EOF){  
	while (!$rs->EOF){  
		$array1[] =  $rs->fields["email"]->value;	
	$rs->MoveNext(); 
	}  
}  
$rs->Close();  
$rs = null; 
$conn2->Close();
$conn2 = null;

$conn2 = new COM ("ADODB.Connection") or die("Nâo foi possível carregar o ADO");
$connStr2 = "PROVIDER=SQLNCLI10;SERVER=".$dbhost2.";UID=".$user2.";PWD=".$password2.";DATABASE=".$db2;
$conn2->open($connStr2);

$sql2 = "select email banco2.dbo.tabela ";  
$rs2 = $conn2->execute($sql2);  
if(!$rs2->EOF){  
	while (!$rs2->EOF){  
		$array2[] =  $rs2->fields["email"]->value;		
	$rs2->MoveNext(); 
	}  
}  
$rs2->Close();  
$rs2 = null; 
$conn2->Close();
$conn2 = null;

 

e depois juntar o resultado tudo num array...certo?

 

o problema é que eu não gostaria de repetir os dados, e para isso eu precisaria de uma instrução na mesma query..

 

por ex:

$sql = "select email banco1.dbo.tabela "; 
$sql = $sql . "where email not in "; 
$sql = $sql . "( "; 
$sql = $sql . "select email banco2.dbo.tabela "; 
$sql = $sql . ") "; 
$sql = $sql . "group by email "; 

só que para isso, eu precisaria instanciar a consulta dos dois bancos na mesma instrução SQL.

 

Se eu criar uma tabela espelho em um único banco contendo os dados de ambos, não vou conseguir instanciar a consulta dos dois bancos na mesma instrução SQL para trazer o resultado que quero.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×