2012-04-29 41 views
7

Có lẽ đây là hoàn toàn sai lầm khi làm, nhưng ...truy vấn cơ sở dữ liệu khác nhau

tôi cần phải làm một truy vấn như thế này:

SELECT * FROM DATABASE1, DATABASE2 ĐÂU DATABASE1.users.name = DATABASE2.users.name

Nếu tôi làm điều đó với phpmyadmin nó hoạt động, nhưng trên php các khối trang.

Con đường tôi kết nối với mysql Tôi đang sử dụng,

$ kết quả = new mysqli (máy chủ, người dùng, vượt qua, cơ sở dữ liệu)

tôi có thể thấy lý do tại sao nó không hoạt động , Tôi đang kết nối với chỉ một cơ sở dữ liệu, nhưng phpmyadmin làm như thế nào sau đó? Tôi có thể làm như thế nào?

Tôi đã xem các bài đăng khác nhưng tôi muốn CHẠY thông tin trên 2 cơ sở dữ liệu và tôi không tìm thấy bất kỳ thứ gì như thế.

[EDIT] Một ví dụ thực tế của mã của tôi sẽ là:

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; 
        } 

     } 

và db_connect chỉ là:

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

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

Truy vấn này làm cho các trang để "tải" indefinetly.

Cảm ơn.

+0

Bạn cần phải thuật lại câu hỏi của mình, để dễ hiểu –

+0

Bạn có nghĩa là các cơ sở dữ liệu khác nhau hoặc các bảng khác nhau? –

+2

Tôi nghĩ câu hỏi là rõ ràng, anh ta muốn nhận được các giá trị từ nhiều bảng hơn, có trong các cơ sở dữ liệu khác nhau. Ví dụ truy vấn hoạt động trong phpmyadmin, nhưng không phải trong mã php mysqli. – Kyborek

Trả lời

2

tôi thử viết một kịch bản dưới đây và có vẻ như được làm việc tốt mà không có thất bại ....

<?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]); 
      } 
     ?> 

Có thể bạn sẽ cần phải đăng mã của bạn ở đây. Có phải tập dữ liệu của bạn lớn không? Vui lòng đăng mã của bạn để chúng tôi có thể kiểm tra và hướng dẫn.

Các vấn đề liên quan