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

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

Patricia Arquette
Patricia Arquette원래의
2024-11-10 12:42:02320검색

How to Perform Cross-Database Queries in PHP?

PHP의 교차 데이터베이스 쿼리: 종합 안내서

이 문서에서는 PHP에서 교차 데이터베이스 쿼리를 구성하는 문제, 즉 문제를 다룹니다. 이는 이전에 MySQL의 맥락에서 탐색된 것입니다. MySQL에서 데이터베이스 간 쿼리를 성공적으로 수행했음에도 불구하고 저자는 PHP에서 프로세스를 복제하려고 시도할 때 우연히 실패했습니다.

특히 저자는 한 번에 하나의 데이터베이스만 사용할 때 mysql_select_db가 부과하는 제한 사항에 대해 의문을 제기합니다. 데이터베이스 간 쿼리는 실용적이지 않습니다. 또한 모든 쿼리에 대해 데이터베이스를 지정하는 대안은 지루한 것으로 간주됩니다.

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

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
");

이 예에서 지정된 데이터베이스는 mysql_select_db에서는 스크립트의 기본 데이터베이스가 됩니다. 그러나 another_db.table_on_another_db에서 볼 수 있듯이 쿼리는 적절한 데이터베이스 이름으로 수동으로 참조하여 다른 데이터베이스의 테이블을 지정할 수 있습니다.

다른 호스트에 대한 대체 접근 방식

데이터베이스가 다른 호스트에 상주하는 경우 직접 조인이 불가능해집니다. 대신, 두 개의 쿼리 접근 방식이 권장됩니다:

$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);

이 방법에는 각 데이터베이스에 하나씩 두 개의 별도 쿼리를 만드는 것이 포함됩니다. 첫 번째 쿼리는 첫 번째 데이터베이스의 기준을 충족하는 레코드의 ID를 검색합니다. 그런 다음 이러한 ID는 두 번째 데이터베이스에서 해당 레코드를 가져오는 두 번째 쿼리에 대한 필터로 사용됩니다.

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

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