>  기사  >  데이터 베이스  >  PHP에서 데이터베이스 간 쿼리를 수행하는 방법은 무엇입니까?

PHP에서 데이터베이스 간 쿼리를 수행하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-15 07:04:02384검색

How to Perform Cross Database Queries in PHP?

PHP의 교차 데이터베이스 쿼리

이전 논의에서는 MySQL의 교차 데이터베이스 쿼리가 다루어졌습니다. 그러나 이 지식을 PHP에서 구현하려고 시도할 때 문제가 발생했습니다.

문제:

PHP는 mysql_select_db를 사용하여 두 가지 접근 방식을 제공합니다.

  1. mysql_select_db를 사용하면 한 번에 하나의 데이터베이스에 대한 액세스가 제한됩니다.
  2. mysql_select_db를 생략하려면 쿼리마다 데이터베이스를 지정해야 하는데 이는 불편하고 비실용적입니다.

해결책:

과도한 수정 없이 PHP에서 데이터베이스 간 쿼리를 수행하려면 다음 단계를 수행할 수 있습니다.

  1. 데이터베이스가 동일한 호스트에 있는지 확인하세요.
  2. mysql_select_db를 사용하여 기본 데이터베이스에 대한 연결을 설정합니다.
  3. 아래와 같이 쿼리에서 외부 데이터베이스를 수동으로 지정합니다.
$db = mysql_connect($host, $user, $password);
mysql_select_db('my_most_used_db', $db);

$q = mysql_query("
    SELECT *
    FROM   table_on_default_db a, `another_db`.`table_on_another_db` b
    WHERE  a.id = b.fk_id
");

데이터베이스가 다른 호스트에 있는 경우 , 직접 조인은 불가능합니다. 이 경우 대신 두 가지 쿼리를 수행할 수 있습니다.

$db1 = mysql_connect($host1, $user1, $password1);
$db2 = mysql_connect($host2, $user2, $password2);

$q1 = mysql_query("
    SELECT id
    FROM   table
    WHERE  [..your criteria for db1 here..]
", $db1);
$tmp = array();
while($val = mysql_fetch_array($q1))
    $tmp[] = $val['id'];

$q2 = mysql_query("
    SELECT *
    FROM   table2
    WHERE  fk_id in (".implode(', ', $tmp).")
", $db2);

위 내용은 PHP에서 데이터베이스 간 쿼리를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.