【问题标题】:Upload multiple .xml files to database using DOMDocument()使用 DOMDocument() 将多个 .xml 文件上传到数据库
【发布时间】:2024-03-09 11:25:01
【问题描述】:

我有一个问题。 当在网站上下订单时,它会生成一个带有 2 个值(EAN、OrderID)的 .xml 文件。
我制作了一个脚本,将 .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
));
    }

$ean 是退出 .xml 提要时的 ean 编号。 也是 $orderID。

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

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

【问题讨论】:

    标签: php sql xml insert


    【解决方案1】:

    尝试将整个代码 sn-p 放入 foreach 循环中,它将上传文件夹中的所有 xml 文件。

    代码

    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
            ));
        }
    }
    

    【讨论】: