如何在Magento中调用不同的数据库来填充自定义下拉框


How to call a different database in Magento to fill a custom dropdown box?

我对Magento非常陌生,我不确定我想要的是否可能。我想做的是不要使用Magento API,因为我们使用的是企业的多站点版本,而且速度非常慢。我目前使用的是Magento版本1.11。

我有一个以前的员工制作的自定义模块,我想为它添加一个下拉框,让它调用不同的数据库(然后是local.xml文件中设置的数据库),并在sql命令上填充该框,以从不同的数据库中获取所有品牌。不同的数据库是SQL数据库,而不是MySQL数据库。我知道连接是有效的,因为我已经测试过了,当我把

mssql_select_db('myDatabase', $link)
die('Something went wrong')

它崩溃了;然而,当我把代码放为:

!mssql_select_db('myDatabase', $link)
die('Something went wrong')

它不会崩溃,而是正常地继续。

我的SQL代码如下:

$getBrandNameQuery = "SELECT a.BrandID, a.[Name]
FROM mydatabase a
join Categories b on a.CategoryID = b.CategoryID
where a.CategoryID = 1

这会给我想要的品牌。现在我的php Magento代码(尽管它只给了我一个空白页)看起来是这样的:

$fieldset->addField("get_brand", "select", array("label"=> $helper->__("Brands"),
"title"=>$helper->__("Brands"),
"name"=>"get_brand",
"required" => true,
/*"values"=> array(
"1" => $helper->__("Active"),
"0" => $helper->__("Inactive"),*/
"values"=> Mage::getSingleton("torus_mailinrebate_block_adminhtml_model_system_config_source_brands")->toOptionArray(),

它不会发回任何内容,也不会填充投递框。以前的值是0和1,表示活动和非活动,但我将拥有大约30多个项目。

我获取数据的代码如下:

for ($i = 0; $i < mssql_num_rows($query); ++$i) {
$row = mssql_fetch_row(mssql_query($getBrandNameQuery));
$id = $row->getId();
$name = $row->getName();
$brandName[] = array('value'=>$id, 'label'=>$name);
}
mssql_free_result($query);
return $brandName;

请告诉我从哪里开始,我们将不胜感激。谢谢

您可以在以下URL中找到如何创建新的DB连接(您已经完成了)以及如何正确访问它:

http://fishpig.co.uk/blog/create-an-external-database-connection-in-magento.html