PHP mysql_query возвращает декодированные закодированные данные - PullRequest
1 голос
/ 12 мая 2011

Я использовал htmlspecialchars для столбца в моей базе данных под названием «Описание».

Я получил страницу поиска на моем веб-сайте, которая возвращает результаты, используя это предложение mysql_query:"SELECT * FROM db.db, ГДЕ NameOfEvent LIKE '%". $ Q. "%'"

Я добавил в базу данных следующую строку: "test&test".потому что я использовал htmlspecialchars, в базе данных это будет выглядеть так: "test&test"

Если я наберу 'a' при поиске, test & test будет одним из результатов ... как я могу избежать этого

Ответы [ 3 ]

3 голосов
/ 12 мая 2011

Не сохраняйте свои значения с помощью htmlspecialchars().Это следует использовать для вывода / отображения.

Если необходимо, рассмотрите возможность сделать это в дополнительном столбце, например formatted_description.Таким образом, вы все равно можете искать на description.

Возможно, не тот ответ, который вам нужен.Но ...

1 голос
/ 12 мая 2011

Вы не можете изменить способ, которым MySQL ищет строки в таблицах. Вы можете просто изменить способ сохранения строк в ваших полях. Возможно, вы можете попытаться сохранить текст в поле «Описание», не используя htmlspecialchars (). И используя его сразу после извлечения из БД.

1 голос
/ 12 мая 2011

Вы должны хранить данные в вашей базе данных в незашифрованном виде, а затем использовать htmlspecialchars, когда получите их обратно, до отображения.

В настоящий момент вам придется прыгать через обручи, чтобы поиск "% a%" игнорировал &.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...