2016-03-08 75 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();