2012-03-15 5 views
0

while 루프를 사용하여 저장 프로 시저에서 호출하는 배열에서 중복 항목을 제거하고 싶습니다.while 루프에서 가져온 중복 제거

// Prepare stored procedure call 
    $sth = $dbh->prepare('CALL sp_get_recipes()'); 

    // Call the stored procedure 
    $res = $sth->execute(); 

    if ($res){     
     while($row = $sth->fetchObject()){ 
      echo $row->Recipe; // I would like to echo this row just once. 
      echo '<ul class="recipe-body"><li>'.$row->Ingredient."&nbsp;".$row->Quantity."&nbsp;".$row->UoM.'</li></ul>'; 
      } 
     // Close connection 
      $dbh = null; 
     }else{ 
     $arr = $sth->errorInfo(); 
     echo "Execution failed with MYSQL: " . $arr[0] . "\n"; 
     die(); 
     } 

내 이해는 내 echo $ row-> Recipe입니다. 어떻게 든 그것 자체에 존재해야합니다. 한 번만 값을 반향하기 위해 array_unique를 조사했지만 정확하게 파악할 수는 없습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있다면 그것은 좋을 것입니다.

업데이트 모든 응답을 주셔서 감사합니다. 고유 한 행을 반환하는 저장 프로 시저를 수정했습니다.

+1

절차에서 고유 한 행을 반환하는 방법은 어떻습니까? –

답변

0

잠시 전에 임시 배열을 만들고 에코 된 모든 래서 피를 저장합니다. echo가 임시 배열에 현재 Recipe가 있는지 확인하기 전에 (echo가 포함되어 있지 않다면 echo & 임시 배열에 echo를 남겨 둡니다).

0

내가 추천하는 데이터베이스 구조를 변경할 수 없다면 먼저 데이터베이스 쿼리에서 가져온 정보를 객체 (예 : Ingredient 객체의 배열이있는 일종의 Recipe 객체)에 저장 한 다음 실제 산출.

데이터베이스 구조 나 쿼리 방법을 변경할 수있는 경우 (후자가 이미 내가 추천하려고하는 것이면) 데이터베이스에 관계형 인 테이블을 만들 수 있습니다. ID 및 각 성분 행에 속한 레시피의 ID를 저장하는 레시피의 성분에 대한 또 다른 표.