4

巨大なコンテンツを db に保存したいのですが、このクエリを実行しようとすると、サンプル テキストの長さが 16129 文字で、firefox では「エラー: 要求された URL を取得できませんでした」、chrome では「no-data received」が表示されます。

さらにLONGTEXT、DBのテキストのデータ型として使用します。

また、phpmyadminでクエリを直接実行しようとしましたが、正しく機能しています。

コードを以下に示します。

public function _getConnection($type = 'core_write') {
        return Mage::getSingleton('core/resource')->getConnection($type);
    }

public function testdbAction(){
        $db = $this->_getConnection();
        $current_time=now();
        $text="The European languages are members of the same family......  ...Europe uses the same vocabulary. The ";//text is 16129 characters in length
        $sql = "INSERT into test(`usercontent_id`,`app_id`,`module_id`,`customer_id`,`content`,`created_time`,`updated_time`,`item_id`,`index_id`,`position_id`) VALUES (NULL, 15, 9,2,'" .$text. "','" . $current_time . "','" . $current_time . "',1003,5,4)";
        $db->query($sql);        
    }

どうすればこれを処理できますか? 提案やヘルプ..

4

2 に答える 2

2

$db->exec($sql)の代わりに使用してみてください$db->query($sql)

于 2013-04-10T17:19:18.520 に答える
0

データベース構造とデータを操作するために、Magento には専用の場所があります。これは、インストール/アップグレード スクリプトと呼ばれます。簡単に更新できるように、モジュールのバージョンを追跡するために作成されました。そのため、スクリプトを使用して新しいデータを追加する必要があります。

これが例です。

モジュールの config.xml:


<modules>
    <My_Module>
        <version>0.0.1</version>
    </My_Module>
</modules>
<global>
    <resources>
        <my_module_setup>
            <setup>
                <module>My_Module</module>
                <class>Mage_Core_Model_Resource_Setup</class>
            </setup>
         </my_module_setup>
    </resources>
</global>

ここで、次のファイルを作成する必要があります。

My_Module/sql/my_module_setup/install-0.0.1.php

Magento のバージョンによっては、ファイルに別の名前を付ける必要があります。Magento CE 1.4 以下 (EE 1.8) を使用している場合は、名前を付けてくださいmysql4-install-0.0.1.php

このスクリプトは、次の Web サイト要求で起動されます。ClassMage_Core_Model_Resource_Setupは 内のコードを実行しますinstall-0.0.1.php$thisインストール スクリプト内から、オブジェクトを使用して Setup クラスにアクセスできます。

これで、スクリプトに次のコードを記述できます。


$this->startSetup();

$text = <<<TEXT
YOUR LONG TEXT GOES HERE
TEXT;

$this->getConnection()
    ->insert(
        $this->getTable('test'),
        array(       
             'usercontent_id' => null,
             'app_id' => 15,
             'content' => $text,
             //other fields in the same fashion
        )
    );

$this->endSetup();

以上です。これは、Magento のデータベースにカスタム データを追加するクリーンで適切な方法です。

フォームを使用してユーザー入力を定期的に保存する場合は、w モデル、リソース モデル、およびコレクションを作成し、config.xml でエンティティを定義することをお勧めします。詳細については、このような Alan Storm の記事を参照してください。

あなたの質問を正しく理解できたことを願っています。

于 2013-04-10T18:03:33.527 に答える