【问题标题】:How connect to multiple databases in PHP using Database Class or like MVC pattern?如何使用数据库类或类似 MVC 模式连接到 PHP 中的多个数据库?
【发布时间】:2012-08-19 06:30:49
【问题描述】:

我希望我的应用程序同时连接到多个数据库。这是我当前的数据库配置:

'database_config' => array(
'db1' =>array( 
    'host_name' => 'localhost',
    'username'  => 'root',
    'password'  => '',
    'dbname'    => 'database1',
    'dbprefix'  => '',
    'dbtype'    => 'mysql'

)
,'db2' => array(
    'host_name' => 'localhost',
    'username'  => 'root',
    'password'  => '',
    'dbname'    => 'test',
    'dbprefix'  => '',
    'dbtype'    => 'mysql'

)  
);

现在我包含了这个文件,如果多个数据库连接在配置文件中作为数组给出,我想连接数据库,否则连接到 db 配置文件中给出的第一个数据库。

我编写了自己的编码结构。与 codeigniter、cakephp 或 yii 框架样式相同,我想一次连接多个数据库,并希望访问配置文件中给出的同名数据库。

如果有多个配置,我尝试了循环,但在连接后如果我想访问数据库则显示错误,因为我想访问并从中选择数据的表仅在第一个数据库中可用,但在第二个数据库中不存在。所以如果有人用oops风格对此有更好的解决方案,请给我解决方案。这会很有帮助。

感谢和问候, 桑杰·戴伊

【问题讨论】:

  • 我试图用英文翻译你的问题,但失败了……什么是“多数据库”?您正在使用它,就好像它是某种标题?你为什么要做某种循环?这与丢失的表格有什么关系?
  • 不可能建立与多个数据库的连接并将它们视为单个数据库,如果这就是您所要求的。
  • 您好 Teresko,我已经在上面给出了我的数据库配置数组。我想连接数据库。如果给出了多个数据库连接字符串,那么它已经连接到多个数据库,否则它应该连接的第一个默认数据库就像 MVC 框架 Codeigniter/cake php 你可以看到的。如果您有任何解决方案,请提供。由于我正在尝试使用 db object $this->db->select(); 选择数据;所以脚本采用第二个连接并尝试执行查询。我正在执行查询的表在第一个数据库中,在第二个数据库中不存在。所以它显示错误。为多db提供一些解决方案
  • 单词的句子顺序。

标签: php mysql cakephp database-connection


【解决方案1】:

根据我在 codeigniter 方面的经验,我们使用此配置来定义数据库并连接到我们想要的每个数据库

$active_group = "forum";
$active_record = TRUE;

$db['forum']['hostname'] = "xxxxx";
$db['forum']['username'] = "xxxxx";
$db['forum']['password'] = "xxxxx";
$db['forum']['database'] = "xxxxx";
$db['forum']['dbdriver'] = "mysql";
$db['forum']['dbprefix'] = "";
$db['forum']['pconnect'] = TRUE;
$db['forum']['db_debug'] = TRUE;
$db['forum']['cache_on'] = FALSE;
$db['forum']['cachedir'] = "";
$db['forum']['char_set'] = "utf8";
$db['forum']['dbcollat'] = "utf8_general_ci";

/* TEST SITE */
$active_group = "default";
$active_record = TRUE;

$db['default']['hostname'] = "xxxxx";
$db['default']['username'] = "xxxxx";
$db['default']['password'] = "xxxxx";
$db['default']['database'] = "xxxxx";
$db['default']['dbdriver'] = "mysql";
$db['default']['dbprefix'] = "";
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = "";
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";  

您的活动数据库将是您最后定义的数据库。

当我们需要它时

$this->db_forum = $this->CI->load->database('forum', TRUE);

使用 $this->db 访问 dbase 1 并使用 $this->db_forum(或任何您称之为的名称)访问 dbase 2。

【讨论】:

  • 嗨! Reza Marefaty, 你完全正确。我想实现相同的功能。但我没有使用任何框架来实现这一点。我编写了自己的编码结构。与 codeigniter、cakephp 或 yii 框架样式相同,我想一次连接多个数据库,并希望访问配置文件中给出的同名数据库。如果您有任何解决方案,请发布。这对我和其他人也会有帮助。问候,桑杰·戴伊
  • 如果你没有使用 cakephp,那么为什么用它来标记问题?
  • 这是因为我想像 Cake php/yii/Codeigniter 一样实现。所以我标记了。如果您有任何解决方案,请提供。
  • 哇,完美..你救了我的一天,伙计。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
  • 2011-03-14
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
相关资源
最近更新 更多