我在oracle数据库中查询使用blob数据类型
存储xml内容的字段我想生成一个字符串作为参数传递给simplexml_load_string函数。
我收到资源类型:
object(OCI-Lob)[111]
public 'descriptor' => resource(118, oci8 descriptor)
使用此代码:
$query = "SELECT xmlcontent FROM myxmltable";
$stid = oci_parse($conn, $query);
oci_execute($stid);
$xml = '';
while (($row = oci_fetch_assoc($stid)) != false) {
// $xml = simplexml_load_string($row['XML']);
$xml = $row['xmlcontent'];
}
var_dump($xml);
如何将资源转换为字符串?
我想要从对象转换为字符串的XML是:
<?xml version="1.0" encoding="utf-8"?>
<VehicleValidation xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Validation Id="Validation">
<Vehicle>
<Year>2017</Year>
<Brand>One car brand</Brand>
</Vehicle>
<Brand>
<Info>
<Data>
<Address>
One car brand Address
</Address>
<Data>
</Info>
</Brand>
</Validation>
</VehicleValidation>
答案 0 :(得分:1)
OCI-Lob
是一个提供various useful methods用于与所代表的LOB内容进行交互的类。
您可以将load
方法的结果直接传递给simplexml_load_string
:
$xml = simplexml_load_string($row['xmlcontent']->load());
请务必考虑手册页中提到的内存限制:
当达到memory_limit时终止脚本执行,请确保LOB不超过此限制。在大多数情况下,建议使用OCI-Lob :: read。