Вот моя ситуация. Я разрабатываю небольшую службу поддержки, где пользователь будет выполнять поиск своей проблемы. НАПРИМЕР. I cannot connect to the internet
.Запросить базу данных с помощью uknown amout параметров
У меня есть на моей базе данных таблицы по ключевым словам, такое интернет, связь, интернет-исследователь и т.д.
То, что я хочу сделать, это разделить эту фразу, I cannot connect to the internet
в словах и есть массив:
[0]=> I
[1]=> cannot
[2]=> connect
[3]=> to
[4]=> the
[5]=> internet
А затем сделать запрос в базе данных, очень просто:
SELECT * FROM solutions T1
join solution_tags_intermediate T2 on T1.ID_SOLUTION = T2.ID_SOLUTION
join solution_tags T3 on T2.SOLUTION_TAGS_ID = T3.SOLUTION_TAGS_ID
WHERE T3. SOLUTION_TAGS_NAME = ??
Вот моя проблема, как я могу привести список записей назад от databas e, которые соответствуют моему поиску, когда я не знаю точное количество параметров до тех пор, пока запрос не будет выполнен?
Есть ли способ сделать это или более сложным?
Кстати, это разрабатывается на php и mysql.
Предполагается, что T3.SOLUTION_TAGS_NAME является одним из элементов массива? Можете ли вы сделать WHERE T3. SOLUTION_TAGS_NAME IN ('. .implode ("', '", $ array).' ') '- Это уязвимо , но вы можете сделать счет и заменить его на '?', чтобы сделать его безопасным ... Но это то, что вы пытаетесь сделать? –
Вам будет лучше использовать индекс FULLTEXT и удаляя «шумовые» слова, такие как 'To' и' the' перед выполнением поиска –
Да, я пытаюсь выполнить поиск по любому из слов в этой строке. Можете ли вы сделать более подробный пример? – codeninja