使用PHP

时间:2015-12-28 19:25:34

标签: php mysql xml

我正在尝试使用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>

1 个答案:

答案 0 :(得分:0)

在您提供的代码中,您在分配任何内容之前使用$key

foreach( $xpath as $node ) {
    $feed[(string)$key->StockCode] = (int)$node->ProdQty;
}

这可能是导致问题的原因。如果我删除此循环,$key确实会增加。