у меня есть WYSIWYG вход для описания. Чтобы сохранить это в базе данных, которую я использовал
$desc = htmlentities($_POST['desc'], ENT_QUOTES, "UTF-8");
Таким образом, на стороне базы данных, описание сохраняется в нечто вроде John's
, Теперь я хочу получить все строки, где desc
является LIKE
John's
,
Прежде чем сделать запрос, я готовлю описание:
$desc = strtolower(htmlentities($desc, ENT_QUOTES, "UTF-8"));
Я использую это в моем предложении WHERE:
WHERE LOWER(desc) LIKE '%{$desc}%'
Запрос ничего не возвращает, хотя мне нужна ваша помощь.
РЕДАКТИРОВАТЬ:
На PL / SQL, когда я использую
WHERE LOWER(desc) LIKE '%john's%'
Появляется небольшое окно с вопросом variables
который выглядит примерно так:
Name Value
=============
amp (this part is blank)
Может быть, в этом проблема?
Далее к нашему обсуждению в комментариях, и показать пример в Oracle:
with tab as (
select ' xxx dave xxx' nam from dual
union all select 'yyy Dave zzz' nam from dual
union all select 'yyy John rrr' nam from dual
union all select 'sss johns zzz' nam from dual
union all select 'yyy jOHn''s zzz' nam from dual)
select nam from tab
where lower(nam) like '%john''s%';
NAM
------------------
yyy jOHn's zzz
Таким образом, базовая конструкция более низкого (как) ‘% john»s%’ работает в Oracle. Что-то в том, как составляется ваш запрос, похоже, является проблемой. Вы выводите строку запроса где-нибудь перед выполнением, чтобы ее можно было проверить?
Других решений пока нет …