我正在使用XMLReader将产品导入到我的SQL表中。 “产品”表中有62419个项目。有时在第一个.xml文件中没有产品的价格,但产品在第二个文件中。因此,即时通讯再次使用XMLReader将此价格存储在“ products_prices”表中。现在,我在此表中获得了50912个项目。我需要解决方案,如何使用“ products_prices”更新“ products”表中的价格。
“产品”表的架构:
id
pxmlId
pprice
psale_price
“ products_prices”表的架构:
id
pxml_id
pprice
psale_price
“ pxmlId”和“ pxml_id”相同-这是两个.xml文件的ID产品。
我尝试过的事情:
这花了很长时间,有时我会收到“ 500错误”。
我认为我能做的: 1.从“ products_prices”中获取商品并将其放入大数组,然后当XMLReader读取.xml文件以查找“ products”时,在此数组中搜索价格。
这是XMLReader的代码:
$reader = new XMLReader();
$reader->open($wpis->feed);
while($reader->read() && $reader->name != 'item' && $reader->name != 'entry'){;}
$i = 0;
$e = 0;
while($reader->name === 'item')
{
$parent = $reader->expand();
$price = $parent->getElementsByTagName('price')->item(0)->nodeValue;
$description = $parent->getElementsByTagName('description')->item(0)->nodeValue;
$title = $parent->getElementsByTagName('title')->item(0)->nodeValue;
$sale_price = $parent->getElementsByTagName('sale_price')->item(0)->nodeValue;
$gtin = $parent->getElementsByTagName('gtin')->item(0)->nodeValue;
$availability = $parent->getElementsByTagName('availability')->item(0)->nodeValue;
$link = $parent->getElementsByTagName('link')->item(0)->nodeValue;
$condition = $parent->getElementsByTagName('condition')->item(0)->nodeValue;
$image_link = $parent->getElementsByTagName('image_link')->item(0)->nodeValue;
$brand = $parent->getElementsByTagName('brand')->item(0)->nodeValue;
$pxmlId = $parent->getElementsByTagName('id')->item(0)->nodeValue;
$clean_price = preg_replace('/[^.0-9]/', '', $price);
$sale_clean_price = preg_replace('/[^.0-9]/', '', $sale_price);
if($gtin){
$gtins = $gtin;
} else {
$gtins = 'nogtin';
}
$data = array(
'ptitle' => trim($title),
'pdesc' => $description,
'pprice' => $clean_price,
'psale_price' => $sale_clean_price,
'pgtin' => $gtins,
'pavailability' => $availability,
'plink' => $link,
'pcondition' => $condition,
'pimage' => $image_link,
'pbrand' => $brand,
'pbrand_tag' => zmiana($brand),
'pshop_currency' => $wpis->waluta,
'pshop' => $wpis->nazwa,
'pshop_id' => $wpis->id,
'pxmlId' => $pxmlId
);
$db->insert('gmc_products', $data);
$lastId = $db->lastInsertId();
$reader->next('item');
$i++;
}