【发布时间】:2022-10-05 19:18:43
【问题描述】:
我有一个 XML:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<products currency=\"EUR\">
<product id=\"457654754\" vat=\"13.0\">
<price gross=\"0.09\" net=\"0.07\"/>
<sizes>
<size id=\"0\" name=\"gfdgfdgfdg\" panel_name=\"dfgfdgfdgfd\" code_producer=\"fgdfgfdg\"
iaiext:code_external=\"457547547547\" code=\"354643643643\" weight=\"4\" iaiext:weight_net=\"10\" >
<stock id=\"1\" quantity=\"333\"/>
</size>
</sizes>
</product>
</products>
当我将其解析为:
<?php
$xml = new XMLReader;
$xml->open(\'XML_URL\');
while ($xml->read()) {
if ($xml->nodeType === XMLReader::ELEMENT && $xml->name == \'product\')
echo $xml->getAttribute(\'id\').\'<br />\';
if ($xml->nodeType === XMLReader::ELEMENT && $xml->name == \'price\')
echo $xml->getAttribute(\'net\').\'<br />\';
if ($xml->nodeType === XMLReader::ELEMENT && $xml->name == \'size\')
echo $xml->getAttribute(\'iaiext:code_external\').\'<br />\';
if ($xml->nodeType === XMLReader::ELEMENT && $xml->name == \'stock\')
echo $xml->getAttribute(\'quantity\').\'<br />\';
}
?>
我得到正确显示的值。 但是如何将它们插入到 mysql 表中? 我在同一个while循环中尝试了它,而不是例如2500行超过48000行作为重复项。 我怎样才能实现它?
数据库
CREATE TABLE `table` (
`auto_increm` int(11) NOT NULL,
`un_id` int(11) NOT NULL,
`price` decimal(15,2) NOT NULL,
`quantity` int(11) NOT NULL,
`ean` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
ALTER TABLE `table`
ADD PRIMARY KEY (`auto_increm`);
ALTER TABLE `table`
MODIFY `auto_increm` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
php 中的 id 属性 = mysql 表中的 un_id
php 中的 net 属性 = mysql 表中的价格
iaiext:php 中的code_external 属性 = mysql 表中的 ean
php 中的数量属性 = mysql 表中的数量。
在平面 XML 中,我总是能够执行插入操作,例如:
<?php
$doc = new DOMDocument();
$doc->load(\'feed.xml\');
$arrFeeds = array();
foreach ($doc->getElementsByTagName(\'item\') as $node) {
$itemRSS = array (
\'sku\' => $node->getElementsByTagName(\'itemcode\')->item(0)->nodeValue,
\'stock\' => $node->getElementsByTagName(\'stock\')->item(0)->nodeValue,
\'price\' => $node->getElementsByTagName(\'price_eur\')->item(0)->nodeValue
);
array_push($arrFeeds, $itemRSS);
}
$counter = 0;
foreach( $arrFeeds as $RssItem){
$sku = $RssItem[\"sku\"];
$stock = $RssItem[\"stock\"];
$price = $RssItem[\"price\"];
$sql = \"INSERT INTO table(sku,stock,price) VALUES (\" . $sku . \"\',\" .
$stock . \"\',\" . $price . \"\')\";
$counter++;
$result = mysqli_query($conn, $sql);
}
echo $counter;
mysqli_close($conn);
?>
-
请提供您的数据库架构
-
我确实编辑了我的初始帖子。