2017-01-11 5 views
0

3時間以上の関連トピックを確認しましたが、解決策を見つけることができませんでした。 データベースの一括SKUをcsvファイルから更新しようとしました。 コードは次のとおりです。致命的なエラー:オブジェクトでないオブジェクトのsetsku()を呼び出す

$updates_file="skus.csv"; 
$sku_entry=array(); 
$updates_handle=fopen($updates_file, 'r'); 

if($updates_handle) { 
    while($sku_entry=fgetcsv($updates_handle, 1000, ",")) { 
     $old_sku=$sku_entry[0]; 
     $new_sku=$sku_entry[1]; 
     echo "<br>Updating ".$old_sku." to ".$new_sku." - "; 


     try { 
      $get_item = $connect->query('SELECT catalog_product_entity FROM skirtbik_mage560->loadByAttribute("sku", $old_sku)'); 

      $get_item = 'SELECT sku FROM catalog_product_entity->loadByAttribute("sku", $old_sku)'; 
      $get_item23 = $connect->query('SELECT sku FROM catalog_product_entity'); 

      if ($get_item) { 
       $get_item->setsku($new_sku)->save(); 

       echo $get_item; 

       echo "successful"; 
      } else { 
       echo "item not found"; 
      } 
     } catch (Exception $e) { 
      echo "Cannot retrieve products from Magento: ".$e->getMessage()."<br>"; 
      return; 
     } 
    } 
} 
fclose($updates_handle); 

エラーは次のとおりです。

Updating 10001 to 20001 - 
Fatal error: Call to a member function setsku() on a non-object in /home/skirtbik/public_html/magento/bulk_skus_update.php on line 25 
+0

'$ get_item = ' SELECT sku from catalog_product_entity-> loadByAttribute( "sku"、$ old_sku) ';は変数を上書きします。 – SOFe

+0

また、問題の変数の値を知りたい場合は、 'echo'の代わりに' var_dump'を使います。 – SOFe

+0

$ get_item変数をトレースします。それはあなたが思うものではありません。 – WillardSolutions

答えて

0

あなたが書き込みを超えているため、これらの2行

$get_item = $connect->query('SELECT catalog_product_entity FROM skirtbik_mage560->loadByAttribute("sku", $old_sku)'); 

// this line destroys the previous contents of $get_item 
$get_item = 'SELECT sku FROM catalog_product_entity->loadByAttribute("sku", $old_sku)'; 
$get_item23 = $connect->query('SELECT sku FROM catalog_product_entity'); 

あなたの場所に別の変数名を使用中$get_itemを破壊します$get_item 2回目を使用