我正在尝试编写一个 PHP 脚本,该脚本将使用 PDO 检索存储在 MS SQL 数据库中的 XML 数据,然后使用 SimpleXML 解析 XML 数据。
问题是检索 XML 数据会导致以下错误消息:
SQLSTATE[HY000]:一般错误:10007 Unicode 唯一排序规则中的 Unicode 数据或 ntext 数据无法发送到使用 DB-Library(例如 ISQL)或 ODBC 版本 3.7 或更早版本的客户端。[10007](严重性 5)
我正在键入转换以检索 XML 数据,该数据作为文本存储在数据库中。我不一定需要将它作为真正的 XML 返回。将它作为字符串检索会很好,因为无论如何我都在使用 SimpleXML 来解析数据。
但是,如果我尝试将这些数据作为文本检索,而不进行类型转换,则 XML 字符串总是会被缩短。然后 SimpleXML 吐出一长串错误,例如:
标签ABC第123行中的数据过早结束
预期的“>”
返回的 XML 的字符串长度最大为 4999。如果我将数据类型转换为 XML,然后转换为 VARCHAR,如下所示:
SELECT CONVERT(VARCHAR(MAX), CAST(XML_DATA AS xml))
然后,我可以从字符串中挤出更多字符 - 最大字符串长度为 5085。
铸造和转换只是一个疯狂的猜测。它已经证明的唯一一件事是我不知道这些最大长度来自哪里,或者它们的含义。
如何完整检索 XML 数据?是什么原因导致断线?PHP/PDO 还是 MS SQL 数据库?
有什么建议么?
附加信息: 数据库是只读的。服务器正在运行 PHP 版本 5.2.17。安装了以下 PDO 驱动程序:sqlite、sqlsrv、mssql、mysql、odbc;MSSQL DB-lib 的 PDO 驱动程序:MSSQL_70。XML 来自亚马逊 MWS。