집 >데이터 베이스 >MySQL 튜토리얼 >PHP를 사용하여 MySQL에서 부모의 모든 자식 및 하위 노드를 얻는 방법은 무엇입니까?
이 문서에서는 모든 하위 노드와 하위 노드를 검색하는 방법을 안내합니다. MySQL 쿼리 결과와 함께 PHP를 사용하여 지정된 상위 항목에 대해 이 기술을 사용하면 트리 구조의 다차원 배열을 구성할 필요가 없으며 모든 노드를 직접 얻을 수 있습니다.
계층 데이터가 ID, 이름 열로 표시되는 인접 목록으로 구성된 MySQL 테이블을 생각해 보세요. 및 parent_id입니다. 다음 SQL 쿼리는 이 테이블의 모든 행을 연관 배열로 검색할 수 있습니다.
$r = mysql_query("SELECT * FROM test "); $data = array(); while($row = mysql_fetch_assoc($r)) { $data[] = $row; }
상위 자체를 포함하여 ID가 3인 상위 아래의 노드에 대해 이 배열을 필터링한다고 가정해 보겠습니다. 이 사용자 정의 fetch_recursive 함수는 다음을 수행할 수 있습니다.
function fetch_recursive($src_arr, $currentid, $parentfound = false, $cats = array()) { foreach($src_arr as $row) { if((!$parentfound && $row['id'] == $currentid) || $row['parent_id'] == $currentid) { $rowdata = array(); foreach($row as $k => $v) $rowdata[$k] = $v; $cats[] = $rowdata; if($row['parent_id'] == $currentid) $cats = array_merge($cats, fetch_recursive($src_arr, $row['id'], true)); } } return $cats; }
이 함수를 사용하려면 쿼리에서 얻은 $data 배열을 첫 번째 인수로 전달하고 하위 노드를 검색하려는 상위 노드의 ID를 다음과 같이 전달합니다. 두 번째 인수:
$list = fetch_recursive($data, 3);
$list에는 이제 모든 하위 노드와 상위 노드(ID 3)가 포함된 연관 배열이 포함됩니다.
이 솔루션은 모든 하위 노드와 하위 노드를 효율적으로 검색합니다. 다차원 트리 구조 구성이 필요 없이 지정된 상위에 대해.
위 내용은 PHP를 사용하여 MySQL에서 부모의 모든 자식 및 하위 노드를 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!