Проблема с сохранением HTML-текста в поле базы данных

#php #mysql

#php #mysql

Вопрос:

Я хочу сохранить конкретное текстовое поле в базе данных в эквивалентной html форме.Я использовал функцию PHP

 $str = htmlentities($str, ENT_QUOTES, "UTF-8");
  

где конкретный столбец в базе данных, связанный с $str переменной, имеет Column Charset: utf8 amp; Column Collate: utf8_bin . но значение сохраняется в той же форме BLOB.

Ответ №1:

BLOB с точки зрения MySQL — это тип данных, который отличается от вашей кодировки символов (utf8) или сортировки. Если вы хотите изменить тип данных, вам придется запросить свою базу данных с помощью…

 ALTER TABLE tbl_name MODIFY col_name TEXT;
  

или VARCHAR() или на что вы хотите это изменить.

Комментарии:

1. но BLOB создается автоматически. Я сделал text type для определенного столбца с Column Charset: utf8 amp; Column Collate: utf8_bin , но при показе этого или просмотре этого он отображается вот так [BLOB - 6 B] .

2. Это потому, что ваши назначения Column Charset: utf8 и Column Collate: utf8_bin неверны для того, что вы пытаетесь сделать. Когда вы создаете новый столбец таблицы, вам нужно выполнить запрос с помощью ALTER TABLE tbl_name ADD col_name TEXT , и ваш тип данных будет TEXT . Набор символов столбца и параметры сортировки автоматически присваиваются таблице по умолчанию.

Ответ №2:

Если вам нужен текст в базе данных, не используйте BLOB тип поля. Используйте TEXT , VARCHAR и т.д. BLOB предназначен для двоичных данных, и ничто из того, что вы делаете в PHP, не изменит способ их хранения в базе данных.

Комментарии:

1. BLOB-объект вполне может использоваться и для текстовых данных, но переводы кодировок применяться не будут.

Ответ №3:

Если вы храните большие HTML-страницы, используйте LARGETEXT()