2011-04-02 104 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