Я создаю список категорий и не знаю, как сохранить символ амперсанда в базе данных MySQL. Есть ли проблема/недостаток, если я использую '&'
. Есть ли отличия от использования в формате html '&'
?
Лучший способ хранить &(амперсанд) в базе данных MySQL
Ответы (5)
Использование '&' экономит несколько байтов. Это не специальный символ для MySQL. Вы можете легко создать &
для вывода позже с помощью PHP-метода htmlspecialchars()
. Когда ваше поле предназначено для хранения простой информации, вы должны использовать только обычный текст, так как в целом это более гибко, поскольку вы можете создавать различные виды разметки и т. д. позже. Исключение: разметка создается пользователем, чьи макеты вы хотите сохранить вместе с текстом (как при вводе форматированного текста). Если у вас есть теги и т. д. во входных данных, вы можете использовать &
для согласованности.
htmlspecialchars()
также заботится о кавычках и символах <
и >
. Если вы выводите Cars Parts в контексте html, браузер отобразит & для &
. Опять же, я бы, вероятно, не стал хранить &
в базе данных.
- person Chris; 29.07.2012
Вы должны хранить его как &
, только если поле в БД содержит HTML (например, <span class="bold">some text</span> & more
). В этом случае вы должны быть очень осторожны с XSS.
Если поле содержит некоторые общие данные (например, имя пользователя, заголовок и т. д.), вам следует экранировать его только тогда, когда вы помещаете его в свой HTML (используя htmlentities).
Сохранение его как &
является подходящим методом. Вы можете повторить его или использовать в операторах как &
.
Мы постоянно храним '&' в полях базы данных, это нормально (по крайней мере, я никогда не слышал другого аргумента).
Если вы когда-либо используете строку только на HTML-странице, вы можете просто сохранить HTML-безопасную версию &
, я полагаю. Я бы предположил, что лучше хранить '&' и экранировать его при чтении (на случай, если в будущем вам понадобится использовать строку в контексте, отличном от HTML).
Используйте &
, если вы хотите иметь правильный HTML или избежать проблем, например cut©
(браузер отображает его как cut©
).
&
должна заканчиваться точкой с запятой. - person halfer   schedule 29.07.2012