VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
ну что, господа удавы, кто хочет поработать?
суть...
есть запрос
PHP Code:
select postid, pagetext from post where lower(pagetext) like '%[text1]%' or lower(pagetext) like '%[text2]%' or lower(pagetext) like '%[text3]%' or lower(pagetext) like '%[text4]%'
т.е. идет предварительная фильтрация по нескольким словам, что бы не запрашивать все подряд и затем передается в цикл while() для дальнейшей работы с текстом
разумеется, запрос формируется автоматически, слова в квадратных скобках из массива в строку в foreach()
на локалке запрос такого вида отрабатывает на "ура", все работает гутт
я обрабатываю запрошенные данные и меняю текст в сообщениях
но если скрипт запускается на серваке в инете, запрос работает только в том случае, когда LIKE '%[text]%' только один, если же идет перечисление через оператор OR - "все пропало, шеф!" - нихрена не пашет, запросы продолжают выполняться циклично, пока не дойдет до последнего сообщения, но в цикл while() нихрена не попадает =\
причем, если выполнять этот запрос в админке из манагера запросов, все четко отрабатывает, запрошенных данных на неск. десятков страниц (в скрипте разумеется все это контролируется LIMIT-ами), все отфильтровано, как надо, т.е. постов без указанных слов в кв. скобках, нет
==
исходные данные
локалка
Windows XP SP3 x86
Apache v2.2.4
PHP 5.2.6
MySQL 5.0.51a-community-nt-log
сервак на котором нифига не пашет
Debian
Nginx
PHP Version 5.4.4-14+deb7u4
MySQL 5.5.31-0+wheezy1
====
где у меня ошибка?
или может в серверном ПО дело?
значения my.cnf могу глянуть, но я думаю не в этом дело
может быть как то переписать запрос, хз...
если нифига не получится, придется вообще выкинуть это и запрашивать только по ID (дольше выполнение скрипта, больше ресурсов)
@usrg
Эксперт
Join Date: May 2009
Posts: 982
Версия vB: 3.8.4
Reputation:
Expert 1420
Репутация в разделе: 64
0
kerk, а подчеркивание "_" или проценты "%" в текст могут попадать?!
gap
Знаток
Join Date: Sep 2013
Posts: 151
Версия vB: 3.8.7
Пол:
Reputation:
Knowing 201
Репутация в разделе: 87
0
Может дело в кодировках?
Если так попробовать?
Code:
select postid, pagetext from post where lower(pagetext) like lower('%[text1]%') or lower(pagetext) like lower('%[text2]%') or lower(pagetext) like lower('%[text3]%') or lower(pagetext) like lower('%[text4]%')
я не так высказался, имелось ввиду расширения php там какое-нить которое мешает. А не модули воблы вообще. Так как если на локалке работает Мускул тут какбы не причем. Хотя это лишь мое предположение.
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,715
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20257
Репутация в разделе: 7723
0
я могу только предположить, что движок там не MyISAM а InnoDB
хз, нужно глянуть
==
уточняю, слова в квадратных скобках, это ббкоды
т.е. я стараюсь отфильтровать запрос поиском в поле pagetext находжением там определенных ббкодов, которые узеры использовали в сообщениях
запрос отрабатывает четко когда нет перечислений через оператор OR, т.е. используется поиск только одного вхождения, выше я уже писал
этот работает и на локалке и на рабочем серваке
PHP Code:
select postid, pagetext from post where lower(pagetext) like '%[text1]%'
этот пашет только на локалке
PHP Code:
select postid, pagetext from post where lower(pagetext) like '%[text1]%' or lower(pagetext) like '%[text2]%' or lower(pagetext) like '%[text3]%' or lower(pagetext) like '%[text4]%'
причем если выполнять последний запрос из админки, он отрабатывает как надо
вот я и не могу понять, либо я где то ошибся, либо что то другое мешает, но что - хз...