【问题标题】:Best Way to Store XML in MySQL在 MySQL 中存储 XML 的最佳方式
【发布时间】:2017-08-16 17:30:14
【问题描述】:

我得到一个 XML API 响应,解析我需要的数据,但想在 MySQL 中存储完整的 XML 响应以供以后添加数据使用。

我最初将 XML 存储在 BLOB 中,但发现值中的特殊字符有时会破坏 INSERT。

因此,我首先将带有 htmlentities 的 XML 转换为 BLOB,以保持原始 API 响应数据的完整性。这是一个好方法,还是有更好的方法?

【问题讨论】:

  • 您能否在edit 您的帖子中将您用于INSERT 您的xml 的代码显示到您的表格中?您可能没有正确转义 XML 文本。另外,XML 应该进入 CLOB(text 数据类型)。 Base 64 编码可以正常工作,但会使您的数据膨胀一点。
  • 当然——你为此使用准备好的语句和绑定变量——这解决了很多“破坏”SQL的问题。

标签: php mysql xml blob


【解决方案1】:

正确转义后,任何数据都可以将INSERTed 转换为BLOBhtmlentities不是的方式。对于mysqli API,使用 mysqli::real_escape_string。对于 PDO 使用绑定。

如果您在 Windows 上运行,请确保以二进制模式获取数据,否则 CR/LF 在读取期间可能会“固定”。

理论上 XML 应该是 UTF-8,所以简单地放入 TEXT CHARACTER SET utf8mb4 应该可以工作,而不是 BLOB

如果一切都失败了,请考虑将 blob(在客户端)转换为 Base64。它会大 4/3。

【讨论】:

    猜你喜欢
    • 2012-04-18
    • 2012-07-27
    • 1970-01-01
    • 2011-05-29
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 2013-03-02
    相关资源
    最近更新 更多