Я получаю ответ XML API, анализирую необходимые данные, но хочу сохранить полный ответ XML в MySQL для последующего использования данных add’l.
Я изначально сохранил XML в BLOB, но обнаружил, что специальные символы иногда в значениях ломают INSERT.
Итак, я сначала конвертирую XML с htmlentities в BLOB, чтобы сохранить целостность данных исходного ответа API. Это хороший способ сделать это, или есть лучший метод?
Правильно экранированный, любые данные могут быть INSERTed
в BLOB
, htmlentities
является не путь. Для mysqli
API, используйте mysqli :: real_escape_string. Для ПДО используйте привязку.
Если вы работаете в Windows, обязательно извлекайте данные в двоичном режиме, иначе CR / LF может быть «исправлен» во время чтения.
Теоретически XML
должно быть UTF-8, поэтому просто положить в TEXT CHARACTER SET utf8mb4
должен работать вместо BLOB
,
Если ничего не помогает, рассмотрите возможность преобразования (в клиенте) большого двоичного объекта в Base64. Это будет на 4/3 больше.
Других решений пока нет …