2012-08-10 70 views
0

我的问题:无法将XML数据附加到MYSQL数据库中的预置XML数据。ZEND:将XML数据附加到SQLDataBase(XML)

我有一个数组 - $ buyer。在这个数组里有一个$ key和$ value,类似于(shippingTotal => 55)。我想要做的是使用类似于

$param = array(
'shippingTotal' => $shippingTotal 
); 
$where['quote_data = ?'] = $quoteNumber 
$n = $db->update('quote_xml', simplexml_load_string($param), $where); 

我的打嗝是quote_data中的当前数据是一个XML元素,其中包含大量的信息。有没有什么方法可以将shippingTotal“粘”到现有的XML中?当我使用上面的代码时,我只是最后将quote_data变为空的。

我还创建了一个名为$ shippingTotal,这样我就不必使用$买家[“shippingTotal”]变量。仍然不起作用。

感谢您对此问题的时间和协助。 亚伦

回答

0

我看到的几个问题与此:

首先,simplexml_load_string不接受数组参数,只有XML字符串。由于$params不是有效的参数,因此它将返回布尔值false。即使成功,它也会返回SimpleXMLElement。要将其转换为XML字符串,您必须在返回的对象上调用asXML()方法,然后将其传递到Zend_Db_Table::update()

其次,最有可能的XML不能只是被“附加”到其他XML。我不知道你的表究竟是什么,但是XML需要以编程方式添加到现有的XML中。您不能追加XML,因为您要添加的数据需要添加到适当的节点。

您需要做的是首先读取该列的值,使用SimpleXML解析它,使用SimpleXML functions之一将新数据添加到文档中的相应节点,然后执行更新。

希望有所帮助。

+0

会是更容易在表的特定部分,以“下载”或捕获整个XML字符串到一个变量,然后就“擦除和替换”一切?也许将XML数据分解为数组,将数组附加到匹配的数组,然后将其全部返回给XML表单?这似乎只是那种迂回,复杂... – ILikeTurtles 2012-08-10 21:40:36

+0

的。如果你需要操作现有的XML,从表中选择XML字符串,加载('$ XML =新的SimpleXMLElement($ xml_string_from_database);'),添加或更新通过改变现有节点或者在适当的位置添加一个新的子节点,将其转换回字符串('$ xmlStr = $ xml-> asXML();'),然后调用'Zend_Db_Table ::使用'$ xmlStr'作为数据更新()''。 – drew010 2012-08-10 21:45:35

+0

谢谢!我会去做! – ILikeTurtles 2012-08-10 21:49:16