[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Универсальный запрос с конструкцией LIKE
Владимир55
Согласно мануалу, указание одного знака нижнего подчеркивания справа от шаблона означает один неопределенный знак справа, а указание процентов означает любое количество знаков справа.

Вместе с тем, указание \% соответствует конкретному знаку процента, а указание \_ соответствует одному символу нижнего подчеркивания.

Но как поступить в случае, когда шаблон формируется скриптом и может содержать внутри себя и знак процента, и знак подчеркивания?

Например, такой код:
SELECT `adres_grupp`, `n_tov_grupp` FROM `grupp` WHERE `adres_grupp` LIKE '$rod_grupp%'

Здесь необходимо, что бы не учитывалось любое количество знаков справа. Этот код будет прекрасно работать, когда
$rod_grupp =777;
$rod_grupp =555;

А что будет, когда
$rod_grupp =777%;
$rod_grupp = “555_”;

Ведь в этих случаях получится запрос
LIKE 777%%
LIKE 555_%

Как сделать, чтобы в обоих случаях находилось «777% и более» и «555_77»?

Кстати, возможен еще вариант, когда проценты и подчеркивания находятся внутри шаблона. Например,
$rod_grupp =77%7%;
$rod_grupp = “55_5_”;

Как работать с такими шаблонами?
Invis1ble
mysql_real_escape_string()

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Winston
SELECT `adres_grupp`, `n_tov_grupp` FROM `grupp` WHERE `adres_grupp` LIKE ' . addcslashes(mysql_real_escape_string($rod_grupp), '%_\\\'') . '%'
Владимир55
Вот этого понять никак не удается:
LIKE ' . addcslashes(mysql_real_escape_string($rod_grupp), '%_\\\'') . '%'


Зачем здесь три обратных слеша?
Владимир55
Процент и подчеркивание экранируются нормально, двойная кавычка экранируется двумя слешами (\\" ), одиночная кавычка экранируется тремя слешами (\\\' , одиночная обратная кавычка не экранируется вообще, а обратный слеш дает сообщение "syntax error".

Разве это нормально?
twin
Нормально. Если смотреть со строрны базы, а не в браузере))

Лишние бэкслэши в неё не пишутся, они только для транспортировки.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.