Magento可以连接到另一个MySQL数据库吗?

时间:2011-08-02 16:32:38

标签: mysql magento

我想知道Magento是否有可能连接到其主数据库,以及另一个不包含Magento核心信息的数据库?

例如,我希望能够从存储在不同服务器上的不同数据库的WordPress安装中查询表吗?

我的第一直觉是使用mysql_connect创建一个新的数据库连接,但是这样做是不对的。

是否有更“正确”的方法来实现这一目标?

4 个答案:

答案 0 :(得分:9)

这里有完整的解释:http://fishpig.co.uk/magento-tutorials/create-an-external-database-connection-in-magento
简而言之,您需要创建一个新资源并告诉magento将此资源用于您的模型,即在config.xml中<global>标记内:

    <resources>
        <external_db>
            <connection>
                <host><![CDATA[host]]></host>
                <username><![CDATA[username]]></username>
                <password><![CDATA[password]]></password>
                <dbname><![CDATA[dbname]]></dbname>
                <model>mysql4</model>
                <type>pdo_mysql</type>
                <active>1</active>
            </connection>
        </external_db>
        <yourmodelalias_read>
            <connection>
                <use>external_db</use>
            </connection>
        </yourmodelalias_read>
    </resources>

答案 1 :(得分:1)

如果查看/lib/Varien/Db/Adapter/Mysqli.php,您可以看到Magento正在扩展Zend_Db_Adapter_Mysqli,而在_connect()函数中,它正在检查连接的缓存副本是否立即存在。

对我而言,直接使用Magento Db Adapter似乎不太可能,因为您必须覆盖此功能。所以,这留下了两个选择:

  1. 使用Zend DB适配器,如果您以前使用它,这非常简单。
  2. 直接使用PHP的MySQL函数。确保使用PDO或MySQLi库,而不是ext / mysql。 ext / mysql库已被弃用,安全使用很麻烦。
  3. http://php.net/manual/en/ref.pdo-mysql.php

    http://php.net/manual/en/book.mysqli.php

    http://framework.zend.com/manual/en/zend.db.html

    编辑:添加Magento Connect模块

    http://www.magentocommerce.com/magento-connect/fishpig/extension/3958/fishpig_wordpress_integration

    这是一个免费的Magento-&gt; Wordpress网桥。可能值得研究他们的来源,看看他们采取了什么样的路径。

答案 2 :(得分:0)

对于自定义magento连接,请访问此链接。

http://magentoo.blogspot.in/2013/12/create-custom-database-connection-in.html

希望这个链接可以帮助你......

答案 3 :(得分:0)

在您的模块etc / config.xml中添加以下代码:

<global>
    <resources>
        <modulename_write>
            <connection>
                <use>modulename_database</use>
            </connection>
        </modulename_write>
        <modulename_read>
            <connection>
                <use>modulename_database</use>
            </connection>
        </modulename_read>
        <modulename_setup>
            <connection>
                <use>core_setup</use>
            </connection>
        </modulename_setup>
        <modulename_database>
            <connection>
                <host><![CDATA[localhost]]></host>
                <username><![CDATA[db_username]]></username>
                <password><![CDATA[db_password]]></password>
                <dbname><![CDATA[tablename]]></dbname>
                <model>mysql4</model>
                <type>pdo_mysql</type>
                <active>1</active>
            </connection>
        </modulename_database>
    </resources>
</global>

使用新数据库从表中获取数据:

<?php 
    $resource   = Mage::getSingleton('core/resource');
    $conn       = $resource->getConnection('modulename_read');
    $results    = $conn->fetchAll('SELECT * FROM tablename');

    echo "<pre>";
    print_r($results);
?>