如何在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);
这没有在数据库中插入。
请对此建议。
答
- 您没有转义查询参数和(SQL注入旁边)JSON字符串通常包含单引号,这会打破查询。
- 你不应该在第一时间用SQL查询完成这件事,让Magento为你做好工作。假设有这个表的模型与别名
checkout/prescription_details
:
Mage::getModel('checkout/prescription_details')
->setData('data', json_encode($customoptions))
->save();
如果没有模型,继续创建一个。没有相应的模型,您不应该拥有数据库表。
答
见Magento的核心JSON编码和解码功能
编码阵列
法师::助手( '核心') - > jsonEncode($阵列);
解码阵列
法师::助手( '核心') - > jsonDecode($ jsonData);
Mage::getModel('checkout/prescription_details')
->setData('data', Mage::helper('core')->jsonEncode($customoptions))
->save();
最好使用核心助手为'json_encode'包装 – 2015-12-22 01:08:14