4

我想在数据库中存储大量内容,当我尝试执行此查询时,我的示例文本长度为 16129 个字符,它在 Firefox 中显示“错误:无法检索请求的 URL”,在 chrome 中显示“未收到数据”。

此外,我LONGTEXT用作数据库中文本的数据类型。

我还尝试直接在 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.

该脚本将在下一个网站请求时启动。类Mage_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 回答