2012-08-10 84 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