2016-10-20 16 views
-3

SELECTクエリに関する問題が発生しています。クエリは、このデータベースのすべての行ではなく、1つの結果のみを出力します。SELECTクエリは1つの結果のみを出力します

誰に見えるのですか?

$select_comments_sql = " 
    SELECT * 
    FROM home_comments 
    ORDER BY id DESC 
"; 
    if ($select_comments_stmt = $con->prepare($select_comments_sql)) { 
     //$select_comments_stmt->bind_param("s", $user_id); 
     $select_comments_stmt->execute(); 
     if (!$select_comments_stmt->errno) { 
      //echo "error"; 
     } 
     $select_comments_stmt->bind_result($comment_id, $comment_user_id, $comment_username, $home_comments, $comment_date); 

     $comment_array = array(); 
     while ($select_comments_stmt->fetch()) { 
      $comment_array[] = $comment_user_id; 
      $comment_array[] = $comment_username; 
      $comment_array[] = $home_comments; 
      $comment_array[] = $comment_date; 
     } 
     if ($home_comments === NULL) { 
      echo 'No comments found.'; 
     } else { 
      echo $comment_username. "<br>"; 
      echo $home_comments. "<br><br><br>"; 
     } 
    } 

AJAX

$("#comment-form").on("submit", function (event) { 
    event.preventDefault(); 

    var home_comment = $("#home_comment").val(); 

    $.ajax({ 
     url: "ajax-php/comment-send.php", 
     type: "POST", 
     data: { 
      "home_comment": home_comment 
     }, 
     success: function (data) { 
     // console.log(data); // data object will return the response when status code is 200 
      if (data == "Error!") { 
       alert("Unable to post comment!"); 
       alert(data); 
      } else { 
       $("#comment-form")[0].reset(); 
       //$('.newsletter-popup').fadeIn(350).delay(2000).fadeOut(); 
      } 
     }, 
     error: function (xhr, textStatus, errorThrown) { 
      alert(textStatus + " | " + errorThrown); 
      console.log("error"); //otherwise error if status code is other than 200. 
     } 
    }); 
}); 

PHP

$user = new User(); 

    $home_comment = $_POST['home_comment']; 
    $username = $user->data()->username; 
    $okay = true; 

    if ($okay) { 

     $comment_insert = " 
      INSERT INTO home_comments 
      (id, user_id, username, comment, date) 
      VALUES(?, ?, ?, ?, NOW()) 
      "; 
     $comment_stmt = $con->prepare($comment_insert); 
     $comment_stmt->bind_param('ssss', $id, $user_id, $username, $home_comment); 
     $comment_stmt->execute(); 
     } 
+0

になりますあなたのwhileループと配列への代入が正しいかどうか確認してください。値を置き換えているようで、最後の値だけがそこにあるはずです。 – Aruna

+0

ループの外側に結果をエコーし​​ているので、最後の結果しか得られません。 –

答えて

1

あなたは、whileループの外側に結果を出力しています。結果セット全体を$comment_array[]に格納しているので、これをダンプして、DBからフェッチされたすべてのコメントを取得したり、ループ内に出力したりすることもできます。

if ($select_comments_stmt = $con->prepare($select_comments_sql)) { 
    //$select_comments_stmt->bind_param("s", $user_id); 
    $select_comments_stmt->execute(); 
    if (!$select_comments_stmt->errno) { 
     //echo "error"; 
    } 
    $select_comments_stmt->bind_result($comment_id, $comment_user_id, $comment_username, $home_comments, $comment_date); 

    $comment_array = array(); 
    while ($select_comments_stmt->fetch()) { 
     $comment_array[] = $comment_user_id; 
     $comment_array[] = $comment_username; 
     $comment_array[] = $home_comments; 
     $comment_array[] = $comment_date; 
     if ($home_comments === NULL) { 
      echo 'No comments found.'; 
     } else { 
      echo $comment_username. "<br>"; 
      echo $home_comments. "<br><br><br>"; 
     } 
    } 
    // Alternatively: print_r($comment_array); 
} 
+0

ありがとう!クイック質問。この選択クエリは、コメントを表示するためのページ読み込み用です。しかし、私は送信時にコメントを挿入するajax呼び出しを持っています。私はajax内で同じ選択クエリを挿入することができます(ページロードなしで)新しいコメントを表示したり、それ以外は? – Paul

+1

クエリ全体を実行して、結果セット全体を再度取得することはお勧めできません。新しいコメントだけを取得するようにajaxリクエストを書くことができます。 –

+0

@Paulコンテンツの読み込みを遅らせることは良い方法です。また、呼び出しで取得されたコメントの数に制限を設定する必要があります。私はまた、コメントした上記のSuhailと同じことを提案したい。 – hjpotter92

1

作成したコードにはいくつか問題があります。まず各列の値を$comment_array配列に追加します。 whileループ内にサブ配列を作成し、$comment_arrayにサブ配列を作成して多次元配列を作成する必要があります。

第2回あなたは、whileループの最後のユーザー名となる$comment_usernameという値を表示しています。

$comment_arrayをループし、各ユーザー名とコメントを個別に表示する必要があります。

コードは、この、

$comment_array = array(); 
    while ($select_comments_stmt->fetch()) { 
     $sub_array=array(); 
     $sub_array["userid"] = $comment_user_id; 
     $sub_array["username"] = $comment_username; 
     $sub_array["comments"] = $home_comments; 
     $sub_array["date"] = $comment_date; 
     $comment_array[]=$sub_array; 
    } 
    if ($home_comments === NULL) { 
     echo 'No comments found.'; 
    } else { 
     echo $comment_username. "<br>"; 
     echo $home_comments. "<br><br><br>"; 

     // Loop over comments array. 

     foreach($comment_array as $comment) { 
      echo $comment["username"]. "<br>"; 
      echo $comment["comments"]. "<br><br><br>"; 
     } 
    } 
関連する問題