집 >데이터 베이스 >MySQL 튜토리얼 >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 중국어 웹사이트의 기타 관련 기사를 참조하세요!