【问题标题】:Codeigniter 2 manual database connectionCodeigniter 2 手动数据库连接
【发布时间】:2011-04-02 16:57:00
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: php database codeigniter codeigniter-2


    【解决方案1】:

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

    如果是,那么这与我们刚刚遇到的问题相同: 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。

    希望对您有所帮助。

    -诺亚

    【讨论】:

    • 谢谢诺亚,不幸的是,问题只是我对 OOP 的理解略有扭曲,这在 Codeigniter 2 中得到了正确实现,但在 Codeigniter 1 中实现得稍微少一些。正如我所说的那样,我使用公共变量,但通过重新定义它们每个控制器和模型,我都在覆盖它们的值!愚蠢的我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多