我正在尝试使用XML文件更新MySQL表。
但是当我在底部运行print_r($key);
时,从0开始的键累加1直到最后一个产品,即3640,但键应该是我的股票代码。请有人帮忙:))
我的php代码如下所示:
<?php
$link = mysql_connect("localhost", "username", "password","db") or die("Could not connect.");
$xml = simplexml_load_file( 'http://www.placeofmyxml.com/myxml.xml' );
$xpath = $xml->xpath( '//Product' );
$feed = array();
foreach( $xpath as $node ) {
$feed[(string)$key->StockCode] = (int)$node->ProdQty;
}
foreach( $xpath as $key => $node ) {
$sql = 'UPDATE products SET quantity="'.$node.'" WHERE model="'.$key.'"';
print_r($key);
$run = mysql_query( $sql, $link );
}
?>
XML看起来像这样:
<Product StockCode="103-10440">
<lastUpdated>Mon, 28 Dec 2015 13:00:23 GMT</lastUpdated>
<StockCode>103-10440</StockCode>
<Brand>3COM</Brand>
<BrandID>14</BrandID>
<ProdName>BIG FLOW BLOWING JUNCTION FLEX BLOCK, TAKES 32, 40</ProdName>
<ProdDesc/>
<Categories>
<TopCat>Accessories</TopCat>
<TopCatID>24</TopCatID>
</Categories>
<ProdImg/>
<ProdPriceExclVAT>30296.79</ProdPriceExclVAT>
<ProdQty>0</ProdQty>
<ProdExternalURL>http://pinnacle.eliance.co.za/#!/product/4862</ProdExternalURL>
</Product>
<Product StockCode="103-20068">
<lastUpdated>Mon, 28 Dec 2015 13:00:23 GMT</lastUpdated>
<StockCode>103-20068</StockCode>
<Brand>3COM</Brand>
<BrandID>14</BrandID>
<ProdName>MULTIFLOW CHAIN FOR MULTIPLE MICRODUCTS, NARROW PR</ProdName>
<ProdDesc/>
<Categories>
<TopCat>Accessories</TopCat>
<TopCatID>24</TopCatID>
</Categories>
<ProdImg/>
<ProdPriceExclVAT>5209.63</ProdPriceExclVAT>
<ProdQty>0</ProdQty>
<ProdExternalURL>http://pinnacle.eliance.co.za/#!/product/4869</ProdExternalURL>
</Product>
<Product StockCode="CALL OUT">
<lastUpdated>Mon, 28 Dec 2015 13:00:23 GMT</lastUpdated>
<StockCode>CALL OUT</StockCode>
<Brand>3COM</Brand>
<BrandID>14</BrandID>
<ProdName>CALL OUT</ProdName>
<ProdDesc/>
<Categories>
<TopCat>Networking</TopCat>
<TopCatID>11</TopCatID>
</Categories>
<ProdImg/>
<ProdPriceExclVAT>5236.52</ProdPriceExclVAT>
<ProdQty>0</ProdQty>
<ProdExternalURL>http://pinnacle.eliance.co.za/#!/product/4885</ProdExternalURL>
</Product>
<Product StockCode="80610581870">
<lastUpdated>Mon, 28 Dec 2015 13:00:23 GMT</lastUpdated>
<StockCode>80610581870</StockCode>
<Brand>3M</Brand>
<BrandID>23</BrandID>
<ProdName>3M FIBERLOK ASSEMBLY TOOL</ProdName>
<ProdDesc/>
<Categories>
<TopCat>Cabling</TopCat>
<TopCatID>33</TopCatID>
</Categories>
<ProdImg>http://www.pinnacleafrica.co.za/products/images/4352/4352-main.jpg</ProdImg>
<ProdPriceExclVAT>856.04</ProdPriceExclVAT>
<ProdQty>8</ProdQty>
<ProdExternalURL>http://pinnacle.eliance.co.za/#!/product/4352</ProdExternalURL>
</Product>
<Product StockCode="80611127624">
<lastUpdated>Mon, 28 Dec 2015 13:00:23 GMT</lastUpdated>
<StockCode>80611127624</StockCode>
<Brand>3M</Brand>
<BrandID>23</BrandID>
<ProdName>3M CONNECTOR ST SM HOTMELT - 8100-YS - YELLOW BOOT</ProdName>
<ProdDesc/>
<Categories>
<TopCat>Cabling</TopCat>
<TopCatID>33</TopCatID>
</Categories>
<ProdImg>http://www.pinnacleafrica.co.za/products/images/4357/4357-main.png</ProdImg>
<ProdPriceExclVAT>38.36</ProdPriceExclVAT>
<ProdQty>0</ProdQty>
<ProdExternalURL>http://pinnacle.eliance.co.za/#!/product/4357</ProdExternalURL>
</Product>
答案 0 :(得分:0)
在您提供的代码中,您在分配任何内容之前使用$key
:
foreach( $xpath as $node ) {
$feed[(string)$key->StockCode] = (int)$node->ProdQty;
}
这可能是导致问题的原因。如果我删除此循环,$key
确实会增加。