Foros del Web » Programando para Internet » PHP »

Consulta Única para Dos tablas en dos bases de datos

Estas en el tema de Consulta Única para Dos tablas en dos bases de datos en el foro de PHP en Foros del Web. Buenas tardes, Hace poco vine a resolver un problema y me lo resolvieron muy bien. Y ahora vengo de nuevo pidiendo su ayuda. Lo que ...
  #1 (permalink)  
Antiguo 28/04/2015, 17:15
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años
Puntos: 0
Consulta Única para Dos tablas en dos bases de datos

Buenas tardes, Hace poco vine a resolver un problema y me lo resolvieron muy bien.

Y ahora vengo de nuevo pidiendo su ayuda.

Lo que pasa es que me la acaban de aplicar feo, pues necesito hacer una conexión a 3 bases de datos diferentes en servidores diferentes, pero supongo que con un ejemplo de dos bases de datos bastará.

Tengo el siguiente código:

Código PHP:
$l1=mysql_connect('111.111.111.111','usuario1','pass1') or die('No se pudo conectar: ' mysql_error());
 
mysql_select_db('base1',$l1);
  echo 
'Connected successfully';
 
 
$l2=mysql_connect('localhost','usuario2','pass2') or die('No se pudo conectar: ' mysql_error());
 
mysql_select_db('base2',$l2);
  echo 
'Connected successfully';
 echo
'<br>';

 
$qry2=mysql_query("select tbl.campo1, tbll.campo2 from base1.tabla1 AS tbl, base2.tabla2 AS tbll");
     
$fila2 mysql_fetch_array($qry2)or die(mysql_error());

echo 
$fila2['campo1'];
echo 
$fila2['campo2'
En el código anterior traté de hacer una sola consulta para dos campos en dos tablas en dos bases de datos en dos servidores diferentes, pero desgraciadamente no funcionó y me salió el siguiente error:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given...
SELECT command denied to user 'usuario2'@'localhost' for table 'cliente'

Y pues es todo mi problema.

Gracias por adelantado y Saludos
  #2 (permalink)  
Antiguo 28/04/2015, 17:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta Única para Dos tablas en dos bases de datos

Pues el problema es bastante obvio:

Cita:
SELECT command denied to user 'usuario2'@'localhost' for table 'cliente'
Eso no se soluciona con código, debes corregir los permisos de acceso y operaciones de tu base de datos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/04/2015, 17:26
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años
Puntos: 0
Respuesta: Consulta Única para Dos tablas en dos bases de datos

Primero que nada sorry pues esa linea esta mal escrita en vez de ser :

SELECT command denied to user 'usuario2'@'localhost' for table 'cliente'

es:

SELECT command denied to user 'usuario2'@'localhost' for table 'tabla1'

Ya corregido tengo que decirles que "tabla1" no está en el servidor localhost, está en el servidor 111.111.111.111
  #4 (permalink)  
Antiguo 28/04/2015, 17:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta Única para Dos tablas en dos bases de datos

¿Entonces ya corregiste el error o qué pasó?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 28/04/2015, 17:33
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años
Puntos: 0
Respuesta: Consulta Única para Dos tablas en dos bases de datos

No, el error sigue sólo que me equivoque al momento de publicar este tema pues publiqué:
SELECT command denied to user 'usuario2'@'localhost' for table 'cliente'

Y era en realidad:
SELECT command denied to user 'usuario2'@'localhost' for table 'tabla1'

cliente cambia por tabla1. Eso fue el error al momento de publicar el tema.

Pero el problema sigue, y es que "tabla1" no está en el localhost como dice el error, sino que esta en el servidor 111.111.111.111

No sé si me explico
  #6 (permalink)  
Antiguo 28/04/2015, 17:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta Única para Dos tablas en dos bases de datos

Pues no necesitas explicar nada: el error sigue siendo obvio.

Cita:
SELECT command denied to user 'usuario2'@'localhost' for table 'tabla1'
Ese es un mensaje de error directo de MySQL, no es un error de código PHP.

Básicamente tienes problemas de permisos a nivel MySQL.

No existe solución con código PHP para eso.

Edito:

A propósito, ¿para qué creas conexiones si no las vas a utilizar?

Vamos, que inclusive mysql_query() requiere de la conexión adecuada, ¿o crees que va a adivinar?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 28/04/2015, 17:45
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años
Puntos: 0
Respuesta: Consulta Única para Dos tablas en dos bases de datos

Pero porque me menciona una tabla que no está alojada en el servidor localhost.

Por eso quiero saber si el código php lo estoy haciendo bien porque cuando hago las consultas por separado me sale bien.

El código de las consultas por separado:

Código PHP:
  $qry1=mysql_query("select * from base1.tabla1",$l1);
     
$fila mysql_fetch_array($qry1);
echo 
$fila['campo1'];
 echo
'<br>';
 
$qry2=mysql_query("select * from base2.tabla2",$l2);
     
$fila2 mysql_fetch_array($qry2);
echo 
$fila2['campo2']; 
El código anterior sí sale bien, pero cuando cambio ese código por este:

Código PHP:
 $qry2=mysql_query("select tbl.campo1, tbll.campo2 from base1.tabla1 AS tbl, base2.tabla2 AS tbll"); 
     
$fila2 mysql_fetch_array($qry2)or die(mysql_error()); 

echo 
$fila2['campo1']; 
echo 
$fila2['campo2'
Es cuando me sale el error
  #8 (permalink)  
Antiguo 28/04/2015, 17:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consulta Única para Dos tablas en dos bases de datos

¿Y la conexión?

Código PHP:
Ver original
  1. $qry2=mysql_query("select tbl.campo1, tbll.campo2 from base1.tabla1 AS tbl, base2.tabla2 AS tbll");

No se ve que especifiques cual de las dos conexiones que tienes se va a usar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 28/04/2015, 21:42
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años
Puntos: 0
Respuesta: Consulta Única para Dos tablas en dos bases de datos

Ese es el problema si uso $l1 o $l2, pues no puedo usar las dos conexiones al mismo tiempo ahí es donde necesito ayuda
  #10 (permalink)  
Antiguo 28/04/2015, 21:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta Única para Dos tablas en dos bases de datos

No puedes hacer una consulta única a bases de datos que están en servidores distintos en MySQL. Para hacer eso deberías usar dblinks, como los de Oracle, pero en MySQL no existen.
Para consultar dos bases diferentes en este DBMS, ambas deben estar en el mismo servidor y acceder con una única conexión desde PHP.
No se si usando tablas FEDERATED se pueda lograr, pero estas requieren las versiones de MySQL mas recientes, y aun así seria con una única conexión.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 28/04/2015, 22:29
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años
Puntos: 0
Respuesta: Consulta Única para Dos tablas en dos bases de datos

Lo peor es que son 3 bases de datos en servidores diferentes y son dos en MySQL y uno en PostgreSQL.

Algo que no me hubiera imaginado ni en mis peores pesadillas.

Pero de que sale, sale, aunque no como yo quería pues al parecer voy a tener que hacer tres páginas iguales una para cada conexión
  #12 (permalink)  
Antiguo 29/04/2015, 08:15
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Consulta Única para Dos tablas en dos bases de datos

Es mejor si utilizas PDO para lo que quieres hacer
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #13 (permalink)  
Antiguo 29/04/2015, 08:53
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años
Puntos: 0
Respuesta: Consulta Única para Dos tablas en dos bases de datos

Hola hhs me podrías decir qué ventajas tiene usar PDO.

Acaso sí puedo hacer conexiones múltiples?
  #14 (permalink)  
Antiguo 29/04/2015, 08:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta Única para Dos tablas en dos bases de datos

Cita:
Iniciado por planmental Ver Mensaje
Lo peor es que son 3 bases de datos en servidores diferentes y son dos en MySQL y uno en PostgreSQL.

Algo que no me hubiera imaginado ni en mis peores pesadillas.

Pero de que sale, sale, aunque no como yo quería pues al parecer voy a tener que hacer tres páginas iguales una para cada conexión
Por un lado, no puedes con esa librería de acceso a MySQL manejar una conexión a PostgreSQL. Es preferible, como te sugieren, un recurso como PDO, a fin de abstraer mejor el acceso a datos.
Por otro lado, no veo mucho sentido hablar de "tres páginas iguales una para cada conexión"... ¿No te resultaría mas sensato pensar en que en la clase donde generes el acceso a datos, uses tres conexiones a diferentes servidores?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 29/04/2015, 09:14
Avatar de planmental  
Fecha de Ingreso: abril-2015
Mensajes: 100
Antigüedad: 9 años
Puntos: 0
Respuesta: Consulta Única para Dos tablas en dos bases de datos

Bueno sí, tienes razón no serían tres páginas.

Pero el problema es que tengo que hacer un buscador y de ahí buscar información que están en cada base de datos.

Entonces estoy viendo si hacer tres buscadores uno para cada base de datos.

O poner un sólo buscador y ver una forma de enviar variables y por medio de if buscar la conexión.

No sé si eso último sea posible.

Etiquetas: bases, mysql, select, sql, tabla, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:45.