我想从MySQL中的另一个数据库获取数据,除了defolat数据库。除了令人兴奋的代码外,我还在模型中添加了以下行。另一个数据库为"storesDB"。
$this->load->database('storesDB', TRUE);
我的模型如下:
public function getEquipment($id = null)
{
$this->db->select('*');
$this->db->from('tbl_equipment');
$this->db->join('tbl_equipment_category', 'tbl_equipment.eq_cat=tbl_equipment_category.id_cat');
$this->db->where("tbl_equipment.status", '1');
if ($id)
$this->db->where("tbl_equipment.id", $id);
$query = $this->db->get();
return $query->result();
}
代码工作正常。但该代码从defalt DB而不是通过"storesDB"获取数据。
修改后的代码如下:
public function getEquipment($id = null)
{
$this->load->database('storesDB', TRUE);
$this->db->select('*');
$this->db->from('tbl_equipment');
$this->db->join('tbl_equipment_category', 'tbl_equipment.eq_cat=tbl_equipment_category.id_cat');
$this->db->where("tbl_equipment.status", '1');
if ($id)
$this->db->where("tbl_equipment.id", $id);
$query = $this->db->get();
return $query->result();
}
原因可能是什么?
原因是没有正确分配第二个数据库。您还需要为第二个数据库设置正确的配置
$config['hostname'] = "host";
$config['username'] = "user";
$config['password'] = "pass";
$config['database'] = "storesDB";
// etc..
然后加载数据库:
$this->db2 = load->database($config, TRUE);
现在有了默认数据库$this->db
和第二个数据库$this->db2
并继续您的代码,如:
$this->db2->select('*');
$this->db2->from('tbl_equipment');
// etc...
我在Codeigniter方面没有经验,但在标准sql查询中,您可以在表前面添加数据库名称,以从另一个数据库获取信息,如:
从sakila.actor中选择*;
假设你没有连接到sakila数据库。
使用此方法,两个数据库必须具有相同的凭据