#php #mysql #search
#php #mysql #Поиск
Вопрос:
Я использовал htmlspecialchars в столбце в моей базе данных под названием ‘Description’.
На моем веб-сайте есть страница поиска, которая возвращает результаты, используя это предложение mysql_query:
«ВЫБЕРИТЕ * ИЗ db.db, ГДЕ NameOfEvent ИМЕЕТ ВИД ‘%».$ q.»%'»
Я добавил в базу данных следующую строку: « testamp;test
«.
поскольку я использовал htmlspecialchars, в базе данных это будет выглядеть так: « testamp;amp;test
«
Если я введу ‘a’ при поиске, одним из результатов будет testamp; проверка… как я могу этого избежать?
Ответ №1:
Не сохраняйте свои значения с помощью htmlspecialchars()
. Это следует использовать для вывода / отображения.
Если необходимо, рассмотрите возможность сделать это в дополнительном столбце, т. е. formatted_description
. Таким образом, вы все еще можете выполнять поиск по description
.
Вероятно, это не тот ответ, который вы хотите. Но…
Комментарии:
1. Не должно быть никаких «если вы должны»! Не храните материал, подобный этому HTML, закодированный в базе данных.
2. @Jame C, полностью согласен. Просто пытаюсь что-то предложить оператору. Не делайте этого , это не лучший ответ. 🙂
3. я не был с вами не согласен, просто был менее вежлив!
4. Я сохранил данные в закодированном виде, потому что подумал, что так будет лучше, если это не имеет значения, то у меня нет причин хранить их в закодированном виде. Я буду декодировать данные и кодировать их только тогда, когда захочу их отобразить. Спасибо
Ответ №2:
Вы должны хранить данные в своей базе данных в незашифрованном виде, а затем использовать для них htmlspecialchars, когда получите их обратно, перед отображением.
В нынешнем виде вам пришлось бы перепрыгнуть через препятствия, чтобы ваш поиск ‘%a%’ был проигнорирован amp;amp;
.
Ответ №3:
Вы не можете изменить способ, которым MySQL выполняет поиск строк в таблицах. Вы можете просто изменить способ сохранения строк в ваших полях. Возможно, вы могли бы попытаться сохранить текст в поле описания без использования htmlspecialchars(). И использует его сразу после извлечения из базы данных.