2016-03-27 40 views
0

whileループ内のコメントをnewsfeed_idで取得しようとしていますが、最初の反復後に結果が表示されません。私はprint_r動的に生成されたクエリは正常に動作しますが、結果は表示されません。whileループ内で最初の反復後にwhileループが結果を表示しないのはなぜですか?

$NewsfeedRes = array(); 
    $Newsfeed = "select * from `ws_newsfeed` where `nf_status` = 1"; 
    $NewsfeedQuery = mysqli_query($this->connection,$Newsfeed); 
    while($rowNews = mysqli_fetch_assoc($NewsfeedQuery)){ 
      $NewsfeedRes[] = $rowNews; 
      $PushComment = "SELECT cmt.`cmt_id`,cmt.`cmt_comment`,cmt.`date_added`, 
          us.`u_username`,us.`u_image` 
          FROM `ws_comments` AS cmt 
          LEFT JOIN `ws_user` AS us ON cmt.`u_id`=us.`u_id` 
          WHERE cmt.`cmt_target_id` = ".$rowNews['nf_id']." 
          AND cmt.`cmt_table_name`='ws_newsfeed'"; 
      //echo $PushComment; This giving me correct query 
      $PushCommentQuery = mysqli_query($this->connection,$PushComment); 
      while($rowPComment = mysqli_fetch_assoc($PushCommentQuery)){ 
       $NewsfeedRes['comments'] = $rowPComment; 
      } 
    } 
    $output = array(

     'NewsfeedRes' => $NewsfeedRes, 
    ); 
    echo json_encode($output, JSON_PRETTY_PRINT); 

問題を解決できるのは間違っています。私は感謝します。ありがとう

+0

'$ newid = $ rowNews ['nf_id'];' '$ newsid ''をステートメントに使用します。 –

+0

@MawiaHLまだ1つのレコードしか表示しようとしていませんでした –

+0

nf_status = 1には多くの行が含まれているとします。あなたは '$ NewsfeedRes [] = $ rowNews;'を必要とせず、 'cmt.cmt_commentをコメント'として選択します。 –

答えて

0

フェッチ・コメント・ループをループするたびに、$ NewsfeedRes ['comments']の値がリセットされます。 $ rowPCommentを配列にプッシュする必要があります。

あなたは$ rowNewsをしたいし、同じ配列の試みであるとコメントしている場合:あなたはコメントやニュースフィードの試みのために別々の配列をしたい場合は

while($rowNews = mysqli_fetch_assoc($NewsfeedQuery)){ 
     $PushComment = "SELECT cmt.`cmt_id`,cmt.`cmt_comment`,cmt.`date_added`,us.`u_username`,us.`u_image` FROM `ws_comments` AS cmt LEFT JOIN `ws_user` AS us ON cmt.`u_id`=us.`u_id` WHERE cmt.`cmt_target_id` = ".$rowNews['nf_id']." AND cmt.`cmt_table_name`='ws_newsfeed'"; 
     //echo $PushComment; This giving me correct query 
     $PushCommentQuery = mysqli_query($this->connection,$PushComment); 
     while($rowPComment = mysqli_fetch_assoc($PushCommentQuery)){ 
      $rowNews['comments'][] = $rowPComment; 
     } 
     $NewsfeedRes[] = $rowNews; 
} 

while($rowNews = mysqli_fetch_assoc($NewsfeedQuery)){ 
     $NewsfeedRes["newsfeed"][] = $rowNews; 
     $PushComment = "SELECT cmt.`cmt_id`,cmt.`cmt_comment`,cmt.`date_added`,us.`u_username`,us.`u_image` FROM `ws_comments` AS cmt LEFT JOIN `ws_user` AS us ON cmt.`u_id`=us.`u_id` WHERE cmt.`cmt_target_id` = ".$rowNews['nf_id']." AND cmt.`cmt_table_name`='ws_newsfeed'"; 
     //echo $PushComment; This giving me correct query 
     $PushCommentQuery = mysqli_query($this->connection,$PushComment); 
     while($rowPComment = mysqli_fetch_assoc($PushCommentQuery)){ 
      $NewsfeedRes['comments'][] = $rowPComment; 
     } 

} 
0

はこれを試してみてください。

while($rowNews = mysqli_fetch_assoc($NewsfeedQuery)){ 
      $newsid = $rowNews['nf_id']; 
      $PushComment = "SELECT cmt.`cmt_id`, cmt.`cmt_comment` as comments, 
          cmt.`date_added`, us.`u_username`,us.`u_image` 
          FROM `ws_comments` AS cmt 
          LEFT JOIN `ws_user` AS us ON cmt.`u_id`=us.`u_id` 
          WHERE cmt.`cmt_target_id` = '$newsid' 
          AND cmt.`cmt_table_name`='ws_newsfeed'";     
      $PushCommentQuery = mysqli_query($this->connection,$PushComment); 
      while($rowPComment = mysqli_fetch_assoc($PushCommentQuery)){ 
       $NewsfeedRes[] = $rowPComment['comments']; 
      } 
    } 
関連する問題