본문으로 바로가기

[PHP] 다중 DB 연결 시 SELECT문 만들기

category Helloworld!/PHP 2013. 4. 1. 17:09

상황 :
host가 각각 다른 db1(ex. host : 111.111.111.111)과 db2(ex. host: 222.222.222.222)를 연결하였다.

그리고 userid가 88240인 사람에 대해

db1의 test_table에서 mail값을 가져와서 db2에서의 test_table에 있는 mail값과 같은지를 비교하고 싶다.


이럴 때, 그냥

select * form test_table where userid = '88240'

이런식으로 검색하게 되면 어떻게 될까?


db1의 test_table인지 db2의 test_table인지 알수가 없다.


따라서, 어떤 db의 값을 연결하였다는 것을 구분하여야한다.


mysql_query()함수를 php.net에 찾아보면

resource mysql_query ( string $query [, resource $link_identifier ] )

라고 나와있다. 특히, resource 부분을 자세히 보자.


MySQL 연결. 지정하지 않으면 mysql_connect()로 연 마지막 연결을 사용합니다. 연결이 없으면, 인수 없이 mysql_connect()를 호출하여 연결을 만듭니다. 연결이 성립되지 않으면 E_WARNING 등급의 오류를 생성합니다.


그렇다! mysql_query()함수에서 db이름을 지정하여 사용하면 된다는 것.


예를들어,


//db1 연결 함수 선언
function db1($database = "db1"){
    $host = "host";
    $user = "userid";
    $pass = "password";

    $connect = @mysql_connect($host, $user, $pass) or die("ERROR!");
    mysql_query(" SET NAMES 'utf8' ");
    return $connect;
}

//db2 연결 함수 선언
function db2($database = "db2"){
    $host = "host";
    $user = "userid";
    $pass = "password";

    $connect = @mysql_connect($host, $user, $pass) or die("ERROR!");
    mysql_query(" SET NAMES 'utf8' ");
    return $connect;
}

//connection resource variable
$db1 = db1();
$db2 = db2();

$sql = "select * form test_table where userid = '88240'";
$query = mysql_query($sql, db1); //db1의 test_table을 실행하고 싶을때
$query = mysql_query($sql, db2);  //db2의 test_table을 실행하고 싶을때
처럼 하면 된다.

* 참고사이트 :

- php.net에서 mysql_query 검색한 페이지

http://www.php.net/manual/kr/function.mysql-query.php