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

问题描述:

我正在magento 1.7版本上工作。在这里我有一个数组中的数据。我使用json_encode在json中对此进行了编码并插入到数据库中。但我越来越像错误如何在magento数据库中保存Json_encode数据?

连接被重置。

如果我插入正常值,那么它工作正常。 在数据库中我有字段类型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);这没有在数据库中插入。

请对此建议。

  1. 您没有转义查询参数和(SQL注入旁边)JSON字符串通常包含单引号,这会打破查询。
  2. 你不应该在第一时间用SQL查询完成这件事,让Magento为你做好工作。假设有这个表的模型与别名checkout/prescription_details
Mage::getModel('checkout/prescription_details') 
    ->setData('data', json_encode($customoptions)) 
    ->save(); 

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

+0

最好使用核心助手为'json_encode'包装 – 2015-12-22 01:08:14

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

编码阵列

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

解码阵列

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

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