2016-03-08 76 views
0

由於一些奇怪的原因,當我嘗試加載數據庫時,沒有返回結果。

class Customer_model extends CI_Model { 

    public function fetch_email_list() { 
     $DB1 = $this->load->database('orders', TRUE); 

     if ($this->load->database('orders') === FALSE){ 
      echo 'no database'; 
     } 

     $results = $DB1->query("SELECT * FROM email_list"); 

     return $results->result_array(); 

    } 
} 

我檢查我的數據庫配置

$db['orders']['hostname'] = 'localhost'; 
$db['orders']['username'] = 'db_user'; 
$db['orders']['password'] = 'password'; 
$db['orders']['database'] = 'db_name'; 
$db['orders']['dbdriver'] = 'mysql'; 
$db['orders']['dbprefix'] = ''; 
$db['orders']['pconnect'] = FALSE; 
$db['orders']['db_debug'] = TRUE; 
$db['orders']['cache_on'] = FALSE; 
$db['orders']['cachedir'] = ''; 
$db['orders']['char_set'] = 'utf8'; 
$db['orders']['dbcollat'] = 'utf8_general_ci'; 
$db['orders']['swap_pre'] = ''; 
$db['orders']['autoinit'] = TRUE; 
$db['orders']['stricton'] = FALSE; 

我該怎麼解決?

+1

你並不需要一個if語句,你已經裝載在''$ DB1''變量的數據庫,並且沒有設置爲TRUE的第二個參數它贏得」返回一個數據庫對象(你實質上是將相同的數據庫加載了兩次,第一次將其設置爲一個自定義變量,第二次將數據庫對象分配爲默認數據庫,例如:「' $ this-> db'') – ahmad

+0

好的,我已經刪除了if語句。我在這個模型類中有兩個函數,一個可以訪問數據庫,一個不能。任何想法爲什麼? – user892134

+0

您正在將數據庫加載到本地變量中,如果要將其加載到此模型中的所有方法中,請定義一個受保護的變量並在各個方法中使用它;我在我的答案中添加了一個示例...查看它。 – ahmad

回答

1

database.php中沒有添加數據庫。如果我們有多個數據庫只有,這使用$DB1 = $this->load->database('orders', TRUE);

設置默認DB

$db['orders']['database'] = 'orders'; 

代碼

public function fetch_email_list() { 
    $this->load->database(); 

    $query = $this->db->query("SELECT * FROM email_list"); 
    $result = $query->result_array(); 
    return $result 
} 

Codeigniter - multiple database connections

0

您可以在模型全局定義的數據庫實例,所以你可以在方法的訪問如下:

class Some_model extends CI_Model { 

    // Our 2nd database 
    protected $DB2; 

    public function __construct() { 
     parent::__construct(); 
     $this->DB2 = $this->load->database('orders', TRUE); 
    } 

    public function some_method() { 
     $q = $this->DB2->query('...'); 
    } 

    public function some_other_method() { 
     $q = $this->DB2->query('...'); 
    } 
} 
+0

這仍然失敗。不跳過當前錯誤消息。 –

+0

什麼失敗?和什麼錯誤信息?你能詳細說明一下嗎?我已經根據OP註釋添加了這個答案,他在配置中沒有任何錯誤,他只想在模型中的多個方法中訪問db對象。 – ahmad

+0

連接DB的方式是錯誤的。當我們使用多個DB時,我們必須在database.php中配置它。除此之外,我們不能像這樣連接 –

0

試試這個

$query = $this->db->get('email_list'); 
return $query->result_array();