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 に答える