[英]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.