2011-04-05 5 views
0

두 SQL 쿼리를 배열에 결합하는 올바른 방법입니까?두 개의 SQL 쿼리를 배열에 결합 하시겠습니까?

참고 : SQL JOIN을 알고 있지만 두 개의 쿼리를 사용해야합니다.

은 아래를 참조하십시오 :

:

$query = "SELECT * FROM categories WHERE takeawayID = :TakeawayID"; 
    $statement = $this->db->prepare($query); 
    $statement->bindValue(':TakeawayID', $takeawayID, PDO::PARAM_STR); 
    $statement->execute(); 
    $data['rowCats'] = $statement->fetchall(PDO::FETCH_CLASS); 
    $categories = array(); 
    foreach ($data['rowCats'] as $cat) { 
     $temp_categories = array(); 
     $temp_categories['id'] = $cat->id; 
     $temp_categories['name'] = $cat->name; 

     $num = $cat->id; 

     $query = "SELECT * FROM items WHERE category_id = :category_id"; 
     $statement = $this->db->prepare($query); 
     $statement->bindValue(':category_id', $num, PDO::PARAM_STR); 
     $statement->execute(); 
     $data['rowItem'] = $statement->fetchall(PDO::FETCH_CLASS); 
     foreach ($data['rowItem'] as $Item) { 
      $temp_categories['item']['name'][] = $Item->name; 
     } 
         $categories[] = $temp_categories; 
    } 

$ 카테고리 배열 내가 이런 일을 할 수 있어야 뷰 파일에서 파일 (템플릿)

를 볼에 전달할 수 있습니다 지금

<?php foreach($categories as $category): ?> 
    <table border=0 Cellspacing='0'> 
     <tr> 
      <td> 
       <?php echo $category['name']; ?> 
      </td> 
     </tr> 
    <?php foreach ($category['items'] as $item): ?>  
     <tr> 
      <td> 
       <?php echo $item['name']; ?> 
      </td> 
     </tr> 
    <?php endforeach; ?> 
    </table> 
<?php endforeach; ?> 
+0

어떤 종류의 문제입니까? 무엇이 출력됩니까? 오류 메시지가 나타 납니까? – Kaivosukeltaja

답변

2

결과를 연관 배열이 아닌 클래스로 가져 오는 이유가 있습니까? FETCH_CLASS에서 FETCH_ASSOC으로 변경하면 임시 배열을 사용하지 않고도 첫 번째 쿼리의 결과에 항목 이름을 직접 추가 할 수 있습니다.

foreach 루프에는 의미 상 여러 개의 이름을 가진 항목이 하나만 있습니다. 제 생각에는 그것이 당신이하려고하는 것이 아니기 때문에 다음과 같이 작성해야합니다 :

foreach ($data['rowItem'] as $Item) { 
     $temp_categories['item'][] = array('name' => $Item->name); 
    } 
+0

고마워요! thats가 문제를 해결했습니다. array ('name'=> $ Item-> name)보다 다른 방법이 있습니까? ? – user622378

+1

@ user622378 : 예, 있습니다. $ arr = array(); $ arr [ 'name'] = $ Item-> name; $ temp_categories [ 'item'] [] = $ arr;'그러나 내 대답의 버전은 단지 그것을 축약 한 것입니다. – Kaivosukeltaja

관련 문제