2012-01-17 2 views
1

PHP를 사용하여 2 데이터베이스에 걸쳐 조인 쿼리를 만들고 싶어.여러 데이터베이스를 연결하고 PHP에서 데이터베이스에 걸쳐 쿼리를 결합

이것은 내 첫 번째 연결입니다.

$conn = mysql_connect('localhost','root1','pass1'); 
@mysql_select_db('database1',$conn); 

이것은 제 두 번째 연결입니다.

$conn1 = mysql_connect('localhost','root2','pass2'); 
@mysql_select_db('database2',$conn1); 

나는 database1에서 데이터를 가져오고 싶다면 다음 일을하고 있습니다. 나는 당신이 함께 또한 테이블 이름을 이전하여이 작업을 수행 할 수 있습니다

$sql = 'SELECT a.fname AS fname, a.lname AS lname FROM database1.users a JOIN database2.orders b ON b.creator_id = a.id'; 

$result = mysql_query($sql);//what should be second parameter over here. 

print_r(mysql_fetch_array($result)); 

답변

5

을 다음과 같이 쿼리에 가입 만드는 중이라서 문제에 직면하고있다

$sql = 'SELECT * FROM orders'; 

$result = mysql_query($sql, $conn1); 

print_r(mysql_fetch_array($result)); 

그러나 두 번째 DATABASE2에 대한 유사

$sql = 'SELECT * FROM users'; 

$result = mysql_query($sql, $conn); 

print_r(mysql_fetch_array($result)); 

예제에서 제안한 것처럼 데이터베이스 이름. 그러나 로그온 한 사용자는 동일한 자격 증명을 사용하여 두 데이터베이스에 모두 액세스해야합니다. 이 마지막 부분은 매우 중요합니다. 그렇지 않으면 그 일을 할 수 없습니다. 해당 링크에서 가져온 link

예 (단지 같은 자격 증명을 사용하여 작동합니다) :

SELECT 
    c.customer_name, 
    o.order_date 
FROM 
    db1.tbl_customers c LEFT JOIN 
    db2.tbl_orders o ON o.customer_id = c.id 
+0

그런 질문은 저에게있어서 문제가 아닙니다. 내 문제는 연결을 유지하는 것입니다. – KuKu

+0

두 데이터베이스 모두에 동일한 사용자/통과 자격 증명이 사용되는지 확인하십시오. 그래서 당신의 질의는 그들 모두에 접근 할 수 있습니다. 그렇지 않으면 효과가 없을 것입니다. 그냥 $ conn을 빼거나, 그 중 하나를 사용하면 어떻게 될지 시험해보십시오. – stefandoorn

0

는 PHP 환경에서 MySQL의 모듈 것은 지원하지 않습니다

이렇게하면 쉽게하지만, 간단한 예제를 제공합니다 게다가,이 모듈은 역 호환을 위해서만 존재합니다. 당신은 그것을 사용해서는 안됩니다.

mysqliPDO이 더 우수하고 더 완벽합니다 (이 트랜잭션 및 준비된 문은 "mysql"을 지원하지 않음). PDO는 다중 db 쿼리도 지원합니다.

이전 mysql은 절차 적이며 mysqli는 절차 적 및 OO 프로그래밍에 사용할 수 있으며 PDO는 OOP입니다.

관련 문제