【问题标题】:How to save Json_encode data in database in magento?如何在magento的数据库中保存Json_encode数据?
【发布时间】:2013-03-14 12:17:58
【问题描述】:

我正在使用 magento 1.7 版本。在此我有一个数组中的数据。我使用 json_encode 将其编码为 json 并插入到数据库中。但我遇到了类似

的错误

连接已重置。

如果我插入正常值,那么它工作正常。 在数据库中,我有字段类型longtext。我使用了mysql_real_escape_string()base_63_encode()serialize(),但没有成功。 我正在使用以下代码

$table = Mage::getSingleton('core/resource')->getTableName('checkout_prescription_details');
$write = Mage::getSingleton('core/resource')->getConnection('core_write');

$custom = json_encode($customoptions);
$query = "insert into {$table} set `data`='$custom';          
$write->query($query);

当我 echo $query 然后它显示编码数据,当我从 phpmyadmin 插入它然后它插入数据库但使用 $write->query($query); 这不是插入数据库。

请就此提出建议。

【问题讨论】:

    标签: database json magento magento-1.7


    【解决方案1】:

    查看 Magento 的核心 JSON 编码和解码函数

    编码一个数组

    Mage::helper('core')->jsonEncode($array);

    解码一个数组

    Mage::helper('core')->jsonDecode($jsonData);

    Mage::getModel('checkout/prescription_details')
        ->setData('data', Mage::helper('core')->jsonEncode($customoptions))
        ->save();
    

    【讨论】:

      【解决方案2】:
      1. 您没有转义查询参数并且(除了 SQL 注入)JSON 字符串通常包含单引号,这会中断查询。
      2. 您一开始就不应该使用 SQL 查询来完成这项工作,让 Magento 为您完成这项工作。假设此表有一个别名为 checkout/prescription_details 的模型:
      Mage::getModel('checkout/prescription_details')
          ->setData('data', json_encode($customoptions))
          ->save();
      

      如果没有模型,请继续创建一个。你不应该有没有相应模型的数据库表。

      【讨论】:

      • 最好使用核心助手作为json_encode的包装器
      猜你喜欢
      • 1970-01-01
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      相关资源
      最近更新 更多