基于条件语句加载数据库

时间:2015-05-11 04:54:58

标签: php codeigniter

我有一个管理页面,管理员可以在其中选择他/她想要跟踪数据库数据的位置:LocalMaster

如果他们选择Local,那么他们将从http:123.456.789:3306获取数据 如果他们选择Inter,那么他们将从http:987.546.321:3306

获取数据
$query_builder = TRUE;

$db['Local'] = array(
  'hostname' => '123.456.789',
  .....

$db['Inter'] = array(
  'hostname' => '987.546.321',
  .....

从这里我成功地选择了我想从模型中获得的数据库:

  function get_Onedata { 
        $this->db2 = $this->load->database('inter',TRUE);
        ...
        $query = $this->db2->query($sql);
  }

但是使用上面的方法,我必须在每个函数中声明我想要加载的数据库。

我想要的是,当我发送/传递变量时,例如:

   $database = $this->input->post('database');

   $toModel = $this->get_model->get_Onedata($database);

从父构造函数中获取数据库:

public function __construct($database)
    {
        parent::__construct();

        if($database = 'inter')
            {
                $this->db = $this->load->database('inter',TRUE);
            }
        else
            {
                $this->db = $this->load->database('local',TRUE);
            }


  public function get_Onedata()
       {
             ...
             ...
             ...
             $query = $this->db->query($sql);
       }

    }   

我希望有人知道我在上面的草图中做了什么。

有人可以帮我正确地完成这个方法吗?

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

如果你这样做......

$toModel = $this->get_model->get_Onedata($database);

然后你需要做这样的事情......

public function __construct(){
        parent::__construct();
}    
public function get_Onedata($database){
  $this->set_database($database);
                 ...
                 ...
  $query = $this->db->query($sql);
}

public function set_database($database){
  if($database = 'inter'){
    $this->db = $this->load->database('inter',TRUE);
  }
  else {
    $this->db = $this->load->database('local',TRUE);
  }
}

这是“一种方式”。