2012-02-08 4 views
1

루프에있는 쿼리의 결과를 가져 오려고하지만 루프에있는 쿼리에서 반환 된 모든 레코드를 가져올 수 없습니다. 루프에서 쿼리 Codeigniter에서 결과 배열을 얻는 방법

$qry = ''; 
    $qry = "SELECT  
      `user_id` FROM 
      `view_property_user_lab`"; 
    $qry .= " WHERE property_id = '" . $propId . "'"; 
    $result = $this->db->query($qry); 
    $result_count = $result->result_array(); 
    foreach ($result_count as $row) 
    { 
     $user_name_qry = "SELECT 
           `name` 
            FROM USER 
            WHERE user_id = '" . $row['user_id'] . "'"; 
            $user_name_result = $this->db->query($user_name_qry); 
    } 

    $result_count_user = $user_name_result->result_array(); 
    print_r($result_count_user); 

배열의 덤프입니다

Array ([0] => Array ([name] => abc)) 
+0

쿼리 루프는 각각의 새로운 사용자로 성장할 것 특히 이후, 아주 나쁜 생각입니다. –

답변

2

나는 당신의 문제는 당신이 foreach 루프를 사용하고 있지만 매번 당신이에게 동일한 변수 ($user_name_result를) 덮어 과 만 사용하는 것이 생각 마지막으로 결과 리소스에서 데이터를 가져 오기 위해 할당됩니다 (외부에서 루프를 호출 했으므로!).

tersko가 언급 한 것처럼 루프에서 쿼리를 수행하는 것은 좋은 방법이 아닙니다 (사용자가 증가할수록 DB를 치는 것).

있습니다 (하지만, 여기 당신의 테이블 스키마를 추측) 조인 된 쿼리에 모든 것을 단순화 할 수 있습니다 : 루프에서

$sql = "SELECT u.name FROM view_property_user_lab AS v JOIN user AS u ON u.user_id = v.user_id WHERE v.property_id = ?"; 
$query = $this->db->query($sql,array($propID)); 

print_r($query->result_array());