2016-04-11 13 views
2

私はPHPスクリプトを使用して、データベースにコメントをプルしてアプリケーションを設定しています。データベースがどのように設定されているかは、二次コメント、つまりコメントへの返信にはreply_idがあります。私が見ている問題は、無回答のすべてのコメントですが、それを持っている1つのコメントと同じ返信が表示されています。私はそれの二次的なコメントで配列を削除しようとしたが、役に立たない。誰かが値を分けていない箇所を指摘することができますか?PHPを使用してMYSQLデータベースからコメントを引き出す予期せぬJSON結果が発生する

// Create connection 
$conn = mysqli_connect($servername, $username, $password,$db); 

// Check connection 
if ($conn->connect_error) 
    die("Connection failed: " . $conn->connect_error); 

    $memory_id=$_POST['memory_id']; 
     $query ="Select * FROM comment WHERE memory_id= '$memory_id' and reply_id=''"; 
     $dbquery = mysqli_query($conn,$query); 
    $query2= "Select * FROM comment WHERE memory_id='$memory_id' and reply_id='$comment_id'"; 
    if($dbquery){ 
     $result = array(); 
     while($row = mysqli_fetch_array($dbquery)) 
     { 
      $temp_array= array(); 
      unset($temp_array['replys']); 
      $temp_array['user_id']=$row['user_id']; 
      $temp_array['comment_id']=$row['comment_id']; 
      $temp_array['text']=$row['comment']; 
      $comment_id= $row['comment_id']; 
      $temp_array['replys']=array(); 
      $dbquery2 = mysqli_query($conn,$query2); 
       if($dbquery2){ 
       while ($row2 = mysqli_fetch_array($dbquery2)){ 
        $temp_array['replys'][]=array(
        'user_id'=>$row2['user_id'], 
        'comment_id'=>$row2['comment_id'], 
        'text'=>$row2['comment']); 
       }//Feeds comments 
      array_push($result, $temp_array); 
      } 
    }//pulls initial command 
     echo json_encode($result); 
    } 
    else 
    { 
    $response["error"] = TRUE; 
      $response["error_msg"] = "No memory FOund"; 
      echo json_encode($response); 
    } 

?> 

答えて

2

2番目のクエリは$memory_id$_POST['memory_id']の値を有する実行されています。簡単な解決策は、$query2行を$memory_id = $row['memory_id']以下に移動することです。つまり、2番目のクエリは正しいmemory_idの値で実行されます。

EDIT より良い解決策は、代わりにクエリを準備することです。 mysqli_prepare機能を確認してください。

+0

チャームのように働いて、助けと洞察力に感謝します。 – Sean

関連する問題