Некорректная выборка, PHP+mysql
Есть поиск по сайту, в нём осуществляется выборка из БД. Запрос такого плана:
select * from news where (st='1' or st='3') and (title like '%$search%' or text like '%$search%' or anounce like '%$search%' or tags like '%$search%') order by id desc
Но выборка идёт не так, как мне хотелось бы. Выходит много лишних новостей, ума не приложу по какому принципу и почему вообще они выводятся. Допустим, придаём $search значение 'пиво', получается везде '%пиво%'. Захожу в первую же попавшуюся из выведенных новостей, пишу в поиске браузера 'пиво' - не находит. Т.е. я уверен что такого сочетания букв ни в title, ни в text, ни в anounce, ни в tags НЕТУ.
В чём может быть проблема?
Запрос? Настройка БД? Возможно, кодировки?
незнание вами основ SQL
А ты уверен что все эти значения (title, text, anounce и tags) у тебя выводятся в виде текста на странице? Если это не так, то поиск браузером тебе ничего не даст и нужно проверять вхождение слов по-другому.
shine, уверен :) иначе бы не спрашивал. Прямой текстовый вывод каждого поля.
точно такая же ситуация была, успокоился на мылси о глюках с русскими кодировками ) но буду рад услышать реальное решение.
Покопал ещё в этом направлении, да, я тоже думал о кодировках и мы оказались правы :) Всё только из-за некорректной настройки сервера БД. Конкретнее сейчас не скажу, но по-моему просто в дефаулт чарсет таблицы должно стоять cp1251, а не что-либо другое. Как решу отпишусь )