1

我刚刚测试了对 codeigniter 2 的升级并遇到了障碍。我的站点使用多个数据库,一个是“系统”数据库,一个是几个“内容”数据库之一。一次只加载两个数据库,系统和根据会话中的值需要的任何内容。

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

不知何故,自从升级到 codeigniter 2,到内容数据库的连接对象并没有进入将使用它的模型。

IE 连接的变量在控制器和模型以及 MY_Controller 和 MY_Model 的顶部是公开的,但是当它到达 MY_Model 时,它不再是一个对象。

有什么想法会在变量传递给codeigniter 2而不是codeigniter 1.7.3中的模型时重置变量的值吗?

4

1 回答 1

0

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

如果是,那么这与我们刚刚遇到的问题相同:http: //codeigniter.com/forums/viewthread/72240/P15/

我们通过创建具有不同用户名的 mysql 用户来解决这个问题,userA 可以访问 dbA,而 userB 可以访问 dbB。

发生的事情是当你有:

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

当您运行第 2 行时,php 会查看此连接是否已打开,问题是 php 仅查看主机名、用户名、密码,因此当您尝试更改数据库时,PHP 实际上是通过引用更新 dbA。

希望有帮助。

-诺亚

于 2011-06-01T18:56:50.083 回答