2012-11-16 3 views
0

이 함수는 실패 할 때 false을 반환하지만 내 경우에는 아무것도 반환하지 않고 충돌합니다.mysqli에서 db-> query crashing PHP

echo "This gets printed" ; 
$x = $db->query("SELECT * FROM something WHERE id=123 AND name='abc'"); 
echo "This does not get printed"; 

실제 쿼리 문자열을 에코로 복사하면 명령 줄에서 mysql에 붙여 넣기 할 수 있습니다. 유효한 쿼리입니다. 내가 생각할 수있는 유일한 것은 그것이 반복적 인 쿼리라는 사실과 관련이있을 수 있으며 $db->query을 두 번 연속 호출 할 수 없다는 것입니다. 여기에 내 흐름이 다소 차이가 있습니다 :

function recursiveQuery ($result) 
{ 
    $temp = array(); 

    while ($row = $result->fetch_assoc()) 
    { 
     $temp [ 'name' ] = $row [ 'name' ]; 
     $id = $row [ 'id' ]; 
     $temp [ 'sub' ] = recursiveQuery ($db->query("SELECT * FROM something WHERE parent_id=$id")); 
    } 

    return $temp; 
} 

recursiveQuery ($db->query("SELECT * FROM something WHERE parent_id=0")); 

이것은 유효하지 않습니까? 어떻게 재구성해야합니까?

+0

JOIN을 사용하는 이유는 무엇입니까? – Scottymeuk

+0

폴더의 경우 무한한 수의 결합이있을 수 있습니다. – puk

+0

모든 레벨에서 단 하나의 항목 만 있으면 함수가 예상 한 결과를 반환하지 않습니다. – Arjan

답변

0

와우, 나는 바보 야. 문제는 범위였습니다. 즉, $db은 재귀 적 쿼리에서 액세스 할 수 없었습니다.