使用DOMDocument()将多个.xml文件上载到数据库

时间:2017-03-08 11:18:03

标签: php sql xml insert

我有一个问题。 当订单放在网站上时,它会生成一个包含2个值的.xml文件(EAN,OrderID)。
我制作了一个脚本,将.xml文件上传到数据库表。

所以这是我使用的代码:

        foreach (glob("*.xml") as $filename) {
        $result = $filename;
        }

        $xmlDoc = new DOMDocument();
        $xmlDoc->load($result);


        $xmlObject = $xmlDoc->getElementsByTagName('order');
        $itemCount = $xmlObject->length;

        for ($i=0; $i < $itemCount; $i++){
          $ean = $xmlObject->item($i)->getElementsByTagName('product_ean13')->item(0)->childNodes->item(0)->nodeValue;
          $orderID = $xmlObject->item($i)->getElementsByTagName('order_id')->item(0)->childNodes->item(0)->nodeValue;

  $sql = $pdo->prepare("INSERT INTO `orders`
                      (ean,
                       orderID)
                       VALUES ( :ean,
                                :order)");

$sql->execute(array(
    "ean" => $ean,
    "order" => $orderID
));
    }
如果退出.xml Feed,则 $ ean是ean编号。 也是$ orderID。

(我使用glob(“*。xml”),因为.xml文件的名称永远不会相同..

现在我的问题是......我如何随时上传多个.xml文件?!

1 个答案:

答案 0 :(得分:0)

尝试将整个代码段放在foreach循环中,它会上传文件夹中的所有xml个文件。

<强> CODE

foreach (glob("*.xml") as $filename) {

    $xmlDoc = new DOMDocument();
    $xmlDoc->load($filename);

    $xmlObject = $xmlDoc->getElementsByTagName('order');
    $itemCount = $xmlObject->length;

    for ($i = 0; $i < $itemCount; $i++) {
        $ean = $xmlObject->item($i)->getElementsByTagName('product_ean13')->item(0)->childNodes->item(0)->nodeValue;
        $orderID = $xmlObject->item($i)->getElementsByTagName('order_id')->item(0)->childNodes->item(0)->nodeValue;

        $sql = $pdo->prepare("INSERT INTO `orders`
                      (ean,
                       orderID)
                       VALUES ( :ean,
                                :order)");

        $sql->execute(array(
            "ean" => $ean,
            "order" => $orderID
        ));
    }
}