データベースから結果を得る検索ボックスをPHPで検索しています。私は検索をライブにしたいので、結果を得るためにAjaxスクリプトを使用しています。Ajaxが照会結果の代わりにすべてのデータベースレコードを返す
これはjavascriptのである:
$(function() {
$('#search').keyup(function() {
var txt = $(this).val();
if (txt != '' && txt.length >= 6) {
$.ajax({
method: 'POST',
url: '{{ path_for('search.post') }}',
success: function(data) {
console.log(data);// Do stuff with data.
}
});
} else {
$('#search_results').html('');
}
});
});
path_for( 'search.post')は(スリム3を使用して)PHP関数を呼び出します。この機能は次のとおりです。
$queryString = "SELECT displayName
FROM guests
INNER JOIN shows ON guests.showId = shows.showId
WHERE (displayName LIKE :search OR talk_title LIKE :search) AND shows.active = 1 AND guests.active = 1
ORDER BY gLastName";
$searchQuery = $this->c->db->prepare($queryString);
$searchText = '%'.$request->getParam('search').'%';
$searchQuery->bindValue(':search', $searchText, PDO::PARAM_STR);
$searchQuery->execute();
$results = $searchQuery->fetchAll(PDO::FETCH_ASSOC);
$jsonResults = json_encode($results);
echo $jsonResults;
私が直接PHPを実行した場合、私は(私は検索内容に応じて、通常は1または2)のために検索されたレコード(複数可)でJSON文字列を取得します。しかし、Ajaxを実行させると、データベースのすべてのレコードが返されます。私はなぜこれが理解できません。
ajaxがecho 'yes'に変更して正しいPHPを呼び出していることがテストされている場合。私がこれをしたとき、私は文字列「はい」を受け取りました。
Ajaxコールを変更する必要がありますか?