2011-04-02 149 views
1

我刚刚测试了对codeigniter 2的升级并遇到了麻烦。我的网站使用多个数据库,其中一个是“系统”数据库和几个“内容”数据库之一。根据会话中的值,只有两个数据库一次加载,系统和任何内容都是必需的。Codeigniter 2手动数据库连接

由于使用会话,我通过MY_Controller中的函数连接到控制器构造函数中的相关内容数据库。

不知何故,自升级到codeigniter 2以来,连接对象到内容数据库并没有使它成为使用它的模型。

I.E.连接的变量在控制器和模型的顶部公开并且MY_Controller和MY_Model,但是到达MY_Model的时候,它不再是一个对象。

任何想法将重置变量的值,因为它传递给codeigniter 2中的模型,但不是codeigniter 1.7.3?

回答

0

这两个数据库是否使用相同的主机名,用户名,密码?

如果是的话,那么这是我们恰好碰到了同样的问题: http://codeigniter.com/forums/viewthread/72240/P15/

我们解决它通过创建MySQL的用户提供不同的用户名,用户A可以访问DBA和用户B可以访问DBB。

  1. $this->dbA = $this->load->database('dbA_config', true);
  2. $this->dbB = $this->load->database('dbB_config', true);

当您运行线#2 PHP会,看看这个连接已经打开,问题是,PHP:

发生了什么事时,你已经是只是看着主机名,用户名,密码,所以当你试图改变数据库时,PHP实际上是通过引用更新dbA。

希望有所帮助。

-Noah

+0

感谢诺亚,不幸的是,问题只是我的OOP的略显扭曲的理解这是正常的笨2实现,但略低于所以笨1.我用的是公共变量就像我说的,而是由他们重新定义在每个控制器和模型中,我都覆盖了它们的值!愚蠢的我。 – willpower232 2011-06-02 08:00:27