PHP живой поиск с массивом
Я делаю живой поиск с использованием AJAX и PHP на моем сайте. Я уже пробовал использовать XML, и мне это не нравится. Мне нужно, чтобы результаты поиска можно было легко обновлять, и я считаю, что это проще сделать с базой данных.
Итак, у меня есть этот код до сих пор:
<?php
// database connection
$query = "SELECT * FROM Questions";
$doQuery = mysql_query($query);
$searchArray = array();
$x = 0;
while($row=mysql_fetch_assoc($doQuery)) {
$searchArray[$x] = $row['title'];
$x++;
}
$q = $_GET['search'];
Теперь у меня есть массив со всеми заголовками из моей таблицы вопросов.
Как мне искать строку в моем массиве, когда пользователь печатает каждую букву. (Предполагая, что у меня есть функция, которая вызывает вышеуказанный запрос, используя ajax на событие keyup).
Или я делаю это совершенно неправильно? Я хотел бы использовать базу данных для получения результатов поиска. Каков наилучший способ сделать это?
Спасибо
ПОСЛЕ РЕДАКТИРОВАНИЯ: Я также уже пытался сделать подобное заявление в рамках $query
:
$query = "SELECT * FROM Questions WHERE title LIKE '%" . $q . "%'";
Мне не понравилось, как это работает, потому что, как только вы прошли одно слово, результат не совпал.
1 ответ
Вместо того, чтобы извлекать данные в массив, лучшим решением было бы установить решение AJAX, в котором ваша конечная точка AJAX выполняет запрос LIKE с подстановочным знаком. Обычные реализации будут выглядеть примерно так:
$query = "SELECT * FROM Questions WHERE someCol LIKE %SOME_INJECTED_VAR%";
Также, как примечание, вы должны рассмотреть использование mysqli или PDO вместо функций mysql_*, поскольку они устарели и будут удалены в следующих версиях PHP.