Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не работает ператор сравнения LIKE
 
 автор: sega_z   (10.05.2012 в 22:44)   письмо автору
 
 

$arr2 = explode(" ",$slova); // Заносим слова в массив


Так нормально находит похожие слова:

... zagolovok LIKE '%$arr2[0]%' ....


А когда пытаюсь найти этим оператором точные вхождения слов, то вообще ничего не находит (хотя они в базе точно есть):

... zagolovok LIKE '$arr2[0]' ....

  Ответить  
 
 автор: Sfinks   (10.05.2012 в 22:50)   письмо автору
 
   для: sega_z   (10.05.2012 в 22:44)
 

А зачем? LIKE - это меееееедленный оператор. Когда нужно точное соответствие проверяйте по-простому:
... zagolovok ='$arr2[0]' ...

  Ответить  
 
 автор: sega_z   (10.05.2012 в 22:58)   письмо автору
 
   для: Sfinks   (10.05.2012 в 22:50)
 

В вашем случае будет сравниваться весь текст заголовка с одним искомым словом.
А нужно, чтобы искомое слово сравнивалось с каждым словом заголовка.
Именно поэтому строка разделена на отдельные слова.

zagolovok LIKE '$arr2[0]' OR zagolovok LIKE '$arr2[1]' OR zagolovok LIKE '$arr2[2]' ....


Но так не работает... Или LIKE не может искать точные вхождения?

  Ответить  
 
 автор: Sfinks   (10.05.2012 в 23:32)   письмо автору
 
   для: sega_z   (10.05.2012 в 22:58)
 

zagolovok LIKE '$arr2[0]' - это и есть весь заголовок, а не каждое его слово.
если у вас заголовок = "конь коня коней" а арр2[0] = "кон", то ничего и не найдется. Если ="%кон%", то найдется. А если вам нужно конкретно "коня", то нужно отделить слово от остального текста, но строка все-равно должна описываться полностью. т.е. арр2[0] должно быть = "% коня %". Но т.к. слово может от текста отделяться не только пробелами, но и знаками препинания, переносами строк и прочей ерундой, то для поиска конкретного слова лучше воспользоваться MATCH и регулярными выражениями.
_____
И это тема для форума "MySQL", а не PHP

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования