#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()