【问题标题】:Adding description to product form csv file向产品表单 csv 文件添加描述
【发布时间】:2016-12-19 05:44:27
【问题描述】:

我编写了一个代码来添加来自 sku 的产品描述。现在脚本工作正常,但所有格式似乎都像 csv 一样丢失了,并且添加到产品的描述是部分的(似乎它在任何特殊字符之后删除了字符串)。

我的代码:

require_once 'app/Mage.php';
umask(0);
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
if (($handle = fopen("Witedescriptions.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $desc =$data[1];
        $sku = $data[2];
        $product = Mage::getModel('catalog/product')->loadByAttribute('sku',$sku);
        $product->setDescription($desc);
        $product->save();
    }
    fclose($handle);
}

CSV 文件结构

Sno. , Description , Sku

关于样本数据的描述

Test this is dummy data abd’s base is of a slim yellow gold halo that easily fits on a finger. 

list here 
•   list 1
•   list 2

当我运行脚本时,产品只有以下数据:

Test this is dummy data abd

似乎它必须转义一些字符,我尝试了您的代码,并将我的描述设置为“美国的黄金价格”,但在管理产品中我只得到了“黄金”

【问题讨论】:

  • 我已经测试了你的代码,解析CSV文件并获取值时没有问题。问题应该在这里:$product->setDescription($desc);,所以看看那个函数。我想您需要先从描述中删除/替换有问题的字符,然后再将其存储到数据库中。
  • 它只是找不到为什么即使添加 addlahes 也不起作用

标签: php csv magento


【解决方案1】:

也可以使用加斜线来转义引号:

$desc = addslashes($data[1]);

但这确实意味着它们需要在输出时被删除。

【讨论】:

    【解决方案2】:

    使用这些函数来转义字符串中的 '

    $data = trim(htmlentities(strip_tags($data)));
    

    $data = mysql_real_escape_string($data);
    

    public function filter($data)
        {
            $data = trim(htmlentities(strip_tags($data)));
            // print_r($data);
            if (get_magic_quotes_gpc()){
                // print_r($data);
                $data = stripslashes($data);
                // print_r($data);
                $data = mysql_real_escape_string($data);
                // print_r($data);
            }
            return $data;       
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多