0

これが私の問題です...「LIKE」句を使用してPDOステートメントからページを更新せずに複数の行を返そうとしています。問題は1行のみを返し、残りは返さないことです...誰か助けてください?前もって感謝します

これが私のhtmlフォームです:

<h2>Please insert the username you would like to search for</h2>

<div align="center" id="loader_div"><span id="search_result"></span></div>

<form action="send/search.php" method="post" id="search_form">
<input type="text" id="search_username" name="get_name" />
<input type="submit" name="submitsearch" />
</form>    
<div id="get_users">

</div>

私のPHPは次のとおりです。

$search = $_POST['get_name'];

$query = $db->prepare("SELECT *
                         FROM `users`
                         WHERE `users`.`username` LIKE ? LIMIT 10");

$query->bindValue(1, "%".$search."%", PDO::PARAM_STR);

try {
     $query->execute();

     $data['success'] = true;

     while($row = $query->fetch(PDO::FETCH_OBJ)) {

     $data['users'] = " ".$row->username." ";

     echo json_encode($data);   
     exit(); 
     }

} catch (PDOException $e) {
  die($e->getMessage());     
  exit();
}

そして、PHPの結果を返すjQueryは次のとおりです。

$.ajax ({
type: "POST",
url: "send/search.php",
data: $('#search_form').serialize(),
dataType: "json",
success: function(data){
        if(data.success === true)
        {
          $("#display_users").html(data.users);
        },
error: function(xhr, status, et) {

    }
});
4

1 に答える 1

2

json_encodeおよびはwhileループのexit外側にある必要があります。

while($row = $query->fetch(PDO::FETCH_OBJ)) {

     $data['users'] .= " ".$row->username." ";    
}

echo json_encode($data);   
exit(); 

クライアント側で必要なフォーマットに応じて、をどうするかを決定し$data['users']ます。これもオプションです。

$data['users'][] = " ".$row->username." ";
于 2012-09-13T19:28:36.423 に答える