2011-01-26 4 views
2

У меня есть следующий блок кода, который взрывает строку в пробелах.Подстановочные значения mysql LIKE или IN выдают

$run = explode(" ",strtolower($q)); 

например. "Это строка"

Массив $run выглядеть:

(Это, есть, строка)

В проблемы им с являются:

Я хочу только explode строка, если она имеет белый цвет, что-то равное с использованием функции php str_word_count($q)> 1.

Невозможно создать один запрос, который будет работать с несколькими словами в строке и таблице поиска, используя любой из них.

$query = "SELECT name FROM `table1` WHERE name LIKE '%". mysql_real_escape_string($run[0]) ."%' OR name LIKE '%". mysql_real_escape_string($run[1]) ."%'"; 

Попытка упростить запрос, сделав его меньшим и переменным по размеру на основе количества слов. Это также хороший aproach для взрыва строки, а затем подготовки sql?

Я попытался использовать IN, а также по SQL-запросу без удачи.

ответ

2

Вы можете использовать MATCH для MySQL. , , ПРОТИВ. , , для выполнения этого вида поиска:

WHERE MATCH (name) AGAINST ('this is the string') 

Consult в documentation для получения дополнительной информации.


Оригинальное решение, не помогает в этой ситуации:

Вы можете проверить MySQL определенную функцию FIND_IN_SET:

WHERE FIND_IN_SET(colname, 'This,is,the,string') > 0 

Значение в ColName не может содержать запятую, однако.

Смежные вопросы