0

我正在使用magento 1.7版本。在这个我有一个数组中的数据。我使用json将它编码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);它不会插入数据库。

请就此提出建议。

4

2 回答 2

6

查看 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();
于 2013-09-20T20:58:14.490 回答
1
  1. 您没有转义查询参数,并且(除了 SQL 注入)JSON 字符串通常包含单引号,这会中断查询。
  2. 你不应该首先使用 SQL 查询来完成这项工作,让 Magento 为你完成这项工作。假设此表有一个模型,别名为checkout/prescription_details
Mage::getModel('checkout/prescription_details')
    ->setData('data', json_encode($customoptions))
    ->save();

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

于 2013-03-14T13:12:43.500 回答