2017-06-06 52 views
0

通過讀取XML文件和XML文件中的數據並使用PHP將數據推送到我的MySQL表中,我正在學習一些關於XML,MySQL和PHP的知識,是XML字段爲空時,它返回一個錯誤:Notice: Trying to get property of non-object in C:\xampp\htdocs\Website\update-products.php on line 177XML到MySQL檢查XML字段是否爲空

如何檢查每個對象的字段是否爲空?

XML代碼

<?xml version="1.0"?> 
<books> 
    <book isbn="978-1594489501"> 
    <title></title> 
    <author>Khaled Hosseini</author> 
    <publisher>Riverhead Hardcover</publisher> 
    <amazon_price></amazon_price> 
    </book> 
    <book isbn="978-1594489587"> 
    <title>The Brief Wondrous Life of Oscar Wao</title> 
    <author>Junot Diaz</author> 
    <publisher></publisher> 
    <amazon_price>14.97</amazon_price> 
    </book> 
    <book isbn="978-0545010221"> 
    <title>Harry Potter and the Deathly Hallows</title> 
    <author>J. K. Rowling</author> 
    <publisher>Arthur A. Levine Books</publisher> 
    <amazon_price>19.24</amazon_price> 
    </book> 
</books>``` 

PHP代碼的一部分

$publisher = $xmlObject->item($i)->getElementsByTagName('publisher')->item(0)->childNodes->item(0)->nodeValue; 

回答

1

很難說清楚沒有看到周圍行代碼177 雖這麼說,你需要在對它們進行操作之前檢查是否存在潛在的缺失節點。

if(isset($document->node->child)){ 
    doStuff($document->node->child); 
} 

這樣就可以跳過文檔中缺失的節點而不會出現錯誤。

+0

嘿,對不起,我只是剛到電腦。 對不起,[這裏有一個鏈接](https://pastebin.com/1grJRZkr)到一個包含更完整代碼的pastebin。 所以我試了一行,但之後,我得到一個錯誤,說它是一個未定義的變量。 下面是我如何編寫代碼: 'if(isset($ document-> node-> child)){{{0}} {product_code = $ xmlObject-> item($ i) - > getElementsByTagName('product_code') - >項(0) - > childNodes->項(0) - >的nodeValue; }' – ConduciveMammal