2012-04-29 32 views
7

Tal vez esto es totalmente erróneo hacer, pero ...consulta de bases de datos diferentes

Necesito hacer una consulta como esta:

SELECT * FROM database1, database2 DONDE DATABASE1.users.name = DATABASE2.users.name

Si lo hago con phpmyadmin funciona, pero en php los bloques de página.

La forma conecto a mysql que estoy usando,

$ result = new mysqli (servidor, pasa usuario, la base de datos)

puedo ver por qué no funciona , Me estoy conectando a una sola base de datos, pero ¿cómo lo hace phpmyadmin entonces? ¿Cómo puedo hacerlo?

He visto otras publicaciones, pero quiero CRUZAR la información en las 2 bases de datos, y no he encontrado nada de eso.

[EDIT] Un ejemplo real de mi código sería:

if($type == "past"){// Hago una query u otro dependiendo de si quiero pasados o futuros 
      $query = "SELECT DISTINCT E.* FROM quehaceshoy_testing.Events E, quehaceshoy_testing.Tickets TK, quehaceshoy_testing.TypeTickets TT, quehaceshoy_testing.Tickets_Reservados2 TR, AirTicket.TICKET T WHERE ((T.Email='$this->email' AND T.idCompra = TR.idCompra AND TR.idTypeTicket_TypeTickets = TT.idTypeTicket AND E.IDEvent = TT.idEvent_Events)OR (E.email = '$this->email')) AND E.dateFinish < '".$fecha."' ORDER BY E.dateFinish DESC"; 
     } 
     else{ 
      $query = "SELECT DISTINCT E.* FROM quehaceshoy_testing.Events E, quehaceshoy_testing.Tickets TK, quehaceshoy_testing.TypeTickets TT, quehaceshoy_testing.Tickets_Reservados2 TR, AirTicket.TICKET T WHERE ((T.Email='$this->email' AND T.idCompra = TR.idCompra AND TR.idTypeTicket_TypeTickets = TT.idTypeTicket AND E.IDEvent = TT.idEvent_Events)OR (E.email = '$this->email')) AND E.dateFinish >= '".$fecha."' ORDER BY E.dateFinish DESC"; 
     } 
     //echo $query; 
     //$result = $this->makeQuery($query, 'RESULT'); 
     if($conn = db_connect()){ 

        $result = $conn->query($query); 
        if(!$result){ 
         //echo '<p>Unable to get list from database.</p>'; 
         //echo $conn->error; 
         return false; 
        } 

     } 

y db_connect es simplemente:

function db_connect() 
{ 
    $result = new mysqli('localhost', $user, $pass, 'quehaceshoy_testing'); 
    $result->set_charset("utf8"); 

    if (!$result) 
     return false; 
    return $result; 
} 

Esta consulta hace que la página de "carga" indefinetly.

Gracias.

+0

Necesita volver a formular su pregunta, para hacer comprensible –

+0

¿Quiere decir bases de datos diferentes o tablas diferentes? –

+2

Creo que la pregunta es clara, él quiere obtener valores de más tablas, que están en diferentes bases de datos. La consulta de ejemplo funciona en phpmyadmin, pero no en mysqli php code. – Kyborek

Respuesta

2

I-prueba escribió un script de abajo y parece estar funcionando bien sin fallar ....

<?php 
      $con = mysql_connect("localhost","root",""); 
      mysql_select_db("test"); 

      $con1 = mysql_connect("localhost","root",""); 
      mysql_select_db("test1"); 

      $query = "SELECT * FROM test1.`manager` INNER JOIN test.employee 
        ON test1.`manager`.id= test.employee.mgr"; 
      $result = mysql_query($query); 
      while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
      printf("ID: %s Name: %s", $row[0], $row[1]); 
      } 
     ?> 

Puede ser que necesita para publicar su código aquí. ¿Es que su conjunto de datos es grande? Por favor, publique su código para que podamos verificarlo y guiarlo.

Cuestiones relacionadas