簡體   English   中英

如何在codeigniter中配置兩個數據庫?

[英]How to configure two database in codeigniter.?

我正在這樣設置我的兩個數據庫

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'sql.domain.com',
    'username' => 'u_name',
    'password' => 'pass',
    'database' => 'DB_1',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

$db['User_DB'] = array(
    'dsn'   => '',
    'hostname' => 'sql.domain.com',
    'username' => 'u_name',
    'password' => 'pass',
    'database' => 'DB_2',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

我正在使用以下代碼在控制器中訪問以上數據庫。

   public function index(){

            $db_anal = $this->load->database('User_DB', TRUE);              
            $p_name = $this->input->post('p_name');


            $user = $this->session->userdata('E_Id');

            $tabs_data['res1'] = $this->db->distinct()->select('p_type')->from('tab_1')->get()->result();       


            //$paper_name = $data;

            $UP_array = array(
                'Status' => 'success',
                'User_id' => $user,                 
            );
            $query1['res1'] = $this->db->select('*')->from('tab_1')->where('p_type',$p_name)->get();        
            $query1['res2'] = $this->db->select('*')->from('tab_2')->where($UP_array)->get();

            $query1['res3'] = $db_anal->select('*')->from('tab_3')->where('User_id',$user)->get();


            echo json_encode($query1);
            return true;                                

}

通過使用以上任何人都可以告訴我的代碼,我得到了空值。 是第二個數據庫的問題。

我該如何解決這個問題?任何人都可以幫助我。

我在控制台中的null之下,也正在使用ajax從codeigniter獲取數據。

{“ res1”:{“ conn_id”:{“ affected_rows”:null,“ client_info”:null,“ client_version”:null,“ connect_errno”:null,“ connect_error”:null,“ errno”:null,“ error” :null,“ error_list”:null,“ field_count”:null,“ host_info”:null,“ info”:null,“ insert_id”:null,“ server_info”:null,“ server_version”:null,“ stat”:null ,“ sqlstate”:null,“ protocol_version”:null,“ thread_id”:null,“ warning_count”:null},“ result_id”:{“ current_field”:null,“ field_count”:null,“ lengths”:null,“ num_rows“:null,” type“:null},” result_array“:[],” result_object“:[],” custom_result_object“:[],” current_row“:0,” num_rows“:null,” row_data“:null },“ res2”:{“ conn_id”:{“ affected_rows”:null,“ client_info”:null,“ client_version”:null,“ connect_errno”:null,“ connect_error”:null,“ errno”:null,“ error “:null,” error_list“:null,” field_count“:null,” host_info“:null,” info“:null,” insert_id“:null,” server_info“:null,” server_version“:null,” stat“: null,“ sqlstate”:null,“ protocol_version”:null,“ thread_id”:null,“ warning_count”:null},“ result_id”:{“ current_field”:null,“ field_count”:null,“ lengths” :null,“ num_rows”:null,“ type”:null},“ result_array”:[],“ result_object”:[],“ custom_result_object”:[],“ current_row”:0,“ num_rows”:null,“ row_data“:null},” res3“:{” conn_id“:{” affected_rows“:null,” client_info“:null,” client_version“:null,” connect_errno“:null,” connect_error“:null,” errno“: null,“錯誤”:null,“錯誤列表”:null,“ field_count”:null,“ host_info”:null,“ info”:null,“ insert_id”:null,“ server_info”:null,“ server_version”:null, “ stat”:null,“ sqlstate”:null,“ protocol_version”:null,“ thread_id”:null,“ warning_count”:null},“ result_id”:{“ current_field”:null,“ field_count”:null,“長度“:null,” num_rows“:null,” type“:null},” result_array“:[],” result_object“:[],” custom_result_object“:[],” current_row“:0,” num_rows“:null, “ row_data”:null}} teq:863:6

讓所有內容都為空的任何人都可以幫助我。

問題是CI代碼

根據文檔 ,get返回一個(query-)result對象

如果您要從中取出數據,請嘗試以下操作

$objQuery = $db_anal->select('*')->from('tab_3')->where('User_id',$user)->get();
if ($objQuery->num_rows() > 0)
{
    $query1['res3'] = $objQuery->result();
}

根據使用多個數據庫連接的最新CI文檔 ,您不應使用$ this-> db-> query()來調用DB,而應為每個連接創建返回的DB對象,例如在示例中:

$db_anal = $this->load->database('User_DB', TRUE);

此TRUE標志指示CI返回數據庫對象,並且將其存儲在$ db_anal中,因此現在您應該將此數據庫連接用作$ db_anal-> query()...

更改代碼中的所有調用,如下所示:

 $tabs_data['res1'] = $this->db->distinct()->select('p_type')->from('tab_1')->get()->result(); 

對此:

 $tabs_data['res1'] = $db_anal->distinct()->select('p_type')->from('tab_1')->get()->result(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM