동일한 호스트에 있는 여러 데이터베이스를 사용하여 PHP에서 데이터베이스 간 쿼리를 어떻게 수행할 수 있나요?

Susan Sarandon
풀어 주다: 2024-11-10 20:28:03
원래의
563명이 탐색했습니다.

How can I perform cross database queries in PHP with multiple databases on the same host?

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

이전 기사에서 MySQL의 교차 데이터베이스 쿼리 구성을 살펴보았습니다. 이 접근 방식은 MySQL에서는 효과적으로 작동했지만 PHP에 직접 적용하는 것은 어려운 일이었습니다. 특히, PHP에서 mysql_select_db를 사용하면 여러 데이터베이스에 액세스하려고 할 때 제한이 발생합니다.

옵션 및 제한 사항

PHP에서 mysql_select_db를 사용할 때 사용할 수 있는 두 가지 주요 옵션

  1. 단일 데이터베이스에 대한 액세스를 제한하여 데이터베이스 간 쿼리를 방지합니다.
  2. 각 쿼리에 데이터베이스를 지정해야 하는 mysql_select_db를 생략합니다.

이러한 옵션 중 어느 것도 기존 코드를 힘들게 변경하지 않고 데이터베이스 간 쿼리를 수행한다는 목표에 부합하지 않습니다.

솔루션: 동일한 호스트 구성

이 문제를 해결하려면, 데이터베이스는 동일한 호스트에 있어야 합니다. 이를 통해 선호하는 기본 데이터베이스에 대한 연결을 유지하면서 외부 데이터베이스를 수동으로 지정할 수 있습니다.

$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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿