2015-07-21 6 views
3

Я работаю над приложением codeigniter, чтобы позволить пользователю добавлять изменения и изменять базу данных.Добавить базу данных в codeigniter динамически

Я хочу повторить этот код цикла:

$db['db1']['hostname'] = 'localhost'; 
$db['db1']['username'] = 'ts4l_wp13'; 
$db['db1']['password'] = 'O&3D6c(0zD70.^9'; 
$db['db1']['database'] = 'ts4l_wp13'; 
$db['db1']['dbdriver'] = 'mysql'; 
$db['db1']['dbprefix'] = ''; 
$db['db1']['pconnect'] = FALSE; 
$db['db1']['db_debug'] = TRUE; 
$db['db1']['cache_on'] = FALSE; 
$db['db1']['cachedir'] = ''; 
$db['db1']['char_set'] = 'utf8'; 
$db['db1']['dbcollat'] = 'utf8_general_ci'; 
$db['db1']['swap_pre'] = ''; 
$db['db1']['autoinit'] = TRUE; 
$db['db1']['stricton'] = FALSE; 

Я делаю это:

@$get_data = mysql_query("SELECT * FROM `database_name`"); 
    while($getdata = mysql_fetch_assoc($get_data)){   
    $id='db'.$getdata['id']; 
    $iid="$id"; 
        $db["$iid"]['hostname'] = 'localhost'; 
        $db["$iid"]['username'] = $getdata['username']; 
        $db["$iid"]['password'] = $getdata['password']; 
        $db["$iid"]['database'] = $getdata['name']; 
        $db["$iid"]['dbdriver'] = 'mysql'; 
        $db["$iid"]['dbprefix'] = ''; 
        $db["$iid"]['pconnect'] = FALSE; 
        $db["$iid"]['db_debug'] = TRUE; 
        $db["$iid"]['cache_on'] = FALSE; 
        $db["$iid"]['cachedir'] = ''; 
        $db["$iid"]['char_set'] = 'utf8'; 
        $db["$iid"]['dbcollat'] = 'utf8_general_ci'; 
        $db["$iid"]['swap_pre'] = ''; 
        $db["$iid"]['autoinit'] = TRUE; 
        $db["$iid"]['stricton'] = FALSE; 
    } 

и этот блок.

// Loading db and running query. 
     $CI = &get_instance();  
     $this->db1 = $CI->load->database('db1', TRUE); 
     $this->db1->set($data); 
     $this->db1->insert($this->_table_name); 
     $id=$this->db1->insert_id(); 

Я делаю это:

$this->load->model('mdb_m'); 
    $dbms =$this->mdb_m->get(); 

     if (count($dbms)) { 
      foreach ($dbms as $dbm) { 
       $mid=$dbm->id; 
       $dbc='db'.$mid; 
       $CI = &get_instance(); 
       $this->db.$mid = $CI->load->database("$dbc" , TRUE); 
       $this->db.$mid->set($data); 
       $this->db.$mid->insert($this->_table_name); 
      } 
     } 

Но это вставить только в первой базе данных в массиве затем остановить и retrive этой ошибки «Вы указали недействительную группу подключения к базе данных.»

ответ

1

вы можете получить краткую информацию об использовании нескольких баз данных здесь. Как вы уже упоминали. https://ellislab.com/codeigniter/user-guide/database/connecting.html

для лучшего подхода, можно сделать файл загрузчика, чтобы загрузить database.I был такой же проблемой и получили четкую визуализацию здесь

https://coderwall.com/p/_kyjvg/codeigniter-loading-up-multiple-databases

см здесь, и если до сих пор путают, пожалуйста, вернуться обратно мне спасибо.