2015-02-11 3 views
2

Я делаю прямой поиск с использованием AJAX и PHP на моем сайте. Я уже пробовал использовать XML, и мне это не нравится. Мне нужно, чтобы результаты поиска могли быть легко обновлены, и мне легче сделать это с помощью базы данных.php live search с массивом

Итак, у меня есть этот код до сих пор:

<?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).

Или я делаю это совершенно неправильно? Я хотел бы использовать базу данных для получения результатов поиска. Каков наилучший способ сделать это?

благодаря

ПОСЛЕ EDIT: Я также уже пытались делать подобное заявление как часть $query:

$query = "SELECT * FROM Questions WHERE title LIKE '%" . $q . "%'"; 

мне не понравилось, как он работал, потому что, как только вы прошли мимо одно слово в результат не совпал.

+0

Почему у вас есть строка, которая говорит '$ x == 0;'? Разве это не должно быть '$ x = 0;'? – yellowantphil

+0

да. Прости. опечатка. я исправлю это – krummens

ответ

1

Вместо того, чтобы вытаскивать данные в массив, лучшим решением было бы настроить решение AJAX, где конечная точка AJAX запускает запрос LIKE с помощью подстановочного знака. Общие реализации будет выглядеть примерно так:

$query = "SELECT * FROM Questions WHERE someCol LIKE %SOME_INJECTED_VAR%"; 

Кроме того, в качестве примечания, вы должны смотреть на использование либо MySQLi или PDO вместо mysql_ * функции, поскольку они устарели и должны быть удалены в будущих версиях PHP.

+0

, пожалуйста, см. мое редактирование – krummens

+0

Вы уверены, что избежите всех подходящих символов? –

+0

№. как бы я это сделал? – krummens