我的一個朋友最近創建了一個magento網店。他希望在他的商店裏有幾千件產品,並要求製造商給他一些他可以簡單導入到magento的數據。製造商說他不擁有這樣的東西,或不想放棄(我對此不是100%肯定)。但他被允許使用他網站上的所有產品信息來完成他的網上商店。所以我寫了一個抓取所有信息的網絡爬蟲。經過研究,人們告訴我不要使用SQL插入所有信息,而是使用PHP腳本和Magento API。創建一個來自PHP的產品 - Magento
我有一些與下面的腳本probelms。它應該創建一個產品添加到Magento數據庫。插入值是測試值。
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
require("app/Mage.php");
echo "Test \n";
Mage::init();
$product = Mage::getModel('catalog/product');
$product->setName('Peter Parker');
$product->setDescription('Peter Parker Description');
$stock_data=array(
'use_config_manage_stock' => 0,
'qty' => 0,
'min_qty' => 0,
'use_config_min_qty'=>0,
'min_sale_qty' => 1,
'use_config_min_sale_qty'=>1,
'max_sale_qty' => 9999,
'use_config_max_sale_qty'=>1,
'is_qty_decimal' => 0,
'backorders' => 0,
'notify_stock_qty' => 0,
'is_in_stock' => 0
);
$product->setData('stock_data',$stock_data);
$product->setTaxClassId(2); // default tax class
$product->setAttributeSetId(9); //9 is for default
$product->setWebsiteIds(array(1));
$product->setCategoryIds(array(9));
$product->setStatus(1);//1=Enabled; 2=Disabled;
$product->setVisibility(4);//4 = catalog & search.
$image_name = 'blabla.JPEG';
$url = 'http://www.rasch-tapeten.de/shop/media/catalog/product/cache/1/image/bf8bb7ab75fe41b467eed88aa79f7917/1/3/133806.JPEG';
$img = 'media/'.$image_name;
echo $img."\n";
function save_image($inPath,$outPath){
//Download images from remote server
$in= fopen($inPath, "rb");
$out= fopen($outPath, "wb");
while ($chunk = fread($in,8192))
{
fwrite($out, $chunk, 8192);
}
fclose($in);
fclose($out);
}
save_image($url, $img);
try
{
$product->addImageToMediaGallery($img, array('image', 'small_image', 'thumbnail'), false, false);
}catch(Mage_Core_Exception $e)
{
echo $e->getMessage();
}
try
{
$product->save();
}catch(Exception $e)
{
echo $e->getMessage();
}
?>
那麼,如果我執行這一項,它拋出以下異常:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`magento`.`catalog_product_entity`, CONSTRAINT `FK_CAT_PRD_ENTT_ATTR_SET_ID_EAV_ATTR_SET_ATTR_SET_ID` FOREIGN KEY (`attribute_set_id`) REFERENCES `eav_attribute_set` (`attribute_set_id`) ON DE)
有誰知道我做錯了什麼?
從錯誤的外觀看起來好像'$ product-> setAttributeSetId(9);'可能是錯誤的。你確定這是默認的,並且表'eav_attribute_set'中是否存在鍵9? – 2012-08-01 13:13:02
啊耶謝謝:)它是4,而不是9.現在它的工作:) – Ogofo 2012-08-01 13:46:45
也看看在Magmi項目:http://sourceforge.net/projects/magmi/如果您的爬網腳本將所有內容轉儲到CSV您可以使用magmi從CSV導入所有內容。它閃電般快速。 – sulman 2012-08-01 14:19:21