如何在magento中保存数据库中的Json_encode数据?

时间:2013-03-14 12:17:59

标签: database json magento magento-1.7

我正在使用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);这不是插入数据库。

请对此提出建议。

2 个答案:

答案 0 :(得分:5)

参见Magento的核心JSON编码和解码功能

编码数组

  

法师::助手( '核心') - > jsonEncode($阵列);

解码数组

  

法师::助手( '核心') - > jsonDecode($ jsonData);

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

答案 1 :(得分:1)

  1. 你没有转义查询参数和(SQL注入除外)JSON字符串通常包含单引号,这会破坏查询。
  2. 首先,您不应该使用SQL查询完成此操作,让Magento为您完成工作。假设此表的模型具有别名checkout/prescription_details
  3. Mage::getModel('checkout/prescription_details')
        ->setData('data', json_encode($customoptions))
        ->save();
    

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