Создание запросов, не зная, что пользовательский ввод (SQL, PHP) - PullRequest
0 голосов
/ 30 марта 2012

Мне нужна помощь в проекте, над которым я работаю.

Вот что я пытаюсь сделать:

Я работаю с MySQL и PHP на веб-странице.Существует поле ввода, в котором пользователь вводит местоположение (Страна, город, штат), дату, длину гонки или название гонки.Дело в том, что они могут вводить любую комбинацию этих элементов (как в Google).

После этого мне нужно запросить базу данных, чтобы показать результаты.Это запрос, который я сейчас использую:

LIKE '$str%' 
OR city LIKE '$str%' 
OR state LIKE '$str%' 
OR country LIKE '$str%' 
OR race_distancia LIKE '$str%'

$ str - это переменная php, содержащая вводимый текст.

Я использую '$ str%', поскольку она будетиспользуйте созданный мной индекс, хотя он работает неправильно, поскольку в конце добавляется регулярное выражение.Поэтому, если я напишу, например: «Майами 5k», это не сработает.Так как ни одна гонка не называется Майами 5k, ни местом ... Но в Майами есть 5ks, хе-хе.

Я думал о том, чтобы разбить введенный текст на пробелы и выполнить запрос для каждого разнесенного элемента, а затем удалить повторяющиеся результаты.Это будет работать, но я пытаюсь найти наиболее эффективное решение, и я не совсем уверен, как избежать повторяющихся элементов.

Спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

Вы можете разбить ввод на слова, используя:

$searchWords = explode(" ", $input);

Если кто-то печатает в Лос-Анджелесе, он будет искать «Лос» и «Анджелес», но я думаю, что он будет работать достаточно хорошо.Вы можете сделать более расширенный поиск с большим количеством полей ввода, если результатов много.

Редактировать: я видел, что вам удалось продвинуться так далеко.Чтобы отфильтровать двойные слова, проверьте: PHP: найдите повторяющиеся слова с пробелом в тексте и без него

Edit2: Что касается проблемы Лос-Анджелеса: возможно, использование "Лос-Анджелес" в качестве поискового слова приемлемо.Чтобы получить потом в массиве, посмотрите этот очень хороший пост об этом: PHP взрывает строку, но обрабатывает слова в кавычках как одно слово

0 голосов
/ 30 марта 2012

Полнотекстовый поиск может помочь вам

...