2017-04-20 7 views
0

私は、コードの下に使用してコントローラに上記のデータベースにアクセスしていますが、このcodeigniterに2つのデータベースを設定するには?

$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 
); 

ように私の2つのデータベースを設定しています。

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値を取得しています。 2番目のデータベースに問題がありますか?

どのように私はこれを解決することができます私を助けることができます。

コンソールでnull以下になっています。また、ajaxを使用してcodeigniterからデータを取得しています。

{ "RES1":{ "conn_id":{ "affected_rows":ヌル、 "CLIENT_INFO":ヌル、 "クライアント_":ヌル、 "connect_errno":ヌル、 "connect_error":ヌル、 "エラー番号" null、 "server_info":null、 "server_version":null:null、 "error_list":null、 "field_count":null、 "host_info":null、 "info":null、 "insert_id" "result_id":{"current_field":null、 "field_count":null、 "null"、 "thread_id":null、 "warning_count" null、 "型":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: "null"、 "error_list":null、 "field_count":null、 "host_info":null、 "info":null、 "insert_id":null、 "server_info":n "result_id":{"current_field":null、 "null"、 "sqlstate":null、 "protocol_version":null、 "thread_id":null、 "warning_count":null} "result_array":[]、 "result_object":[]、 "custom_result_object":[]、 "current_row": "null"、 "num_rows":null、 "type" null "、" connect_errno ":null、" null "、"ヌル、 "error_list":null、 "field_count":null、 "host_info":null、 "info":null、 "insert_id":null、 "server_info":null、 "errno" :null、 "server_version":null、 "stat":null、 "sqlstate":null、 "protocol_version":null、 "thread_id":null、 "warning_count":null}、 "result_id":{"current_field":null "、" result_array ":[]、" result_object ":[]、" custom_result_object ":[]、" current_row "、" field_count ":null、" lengths ":null、" num_rows " :0、 "num_rows":null、 "row_data":null}} teq:863:6

すべてがnullになると、誰でも私を助けることができます。

答えて

1

問題はCIコードです

docsによると、あなたはそれの外にデータが必要な場合

次のことを試して返します(query-)結果オブジェクト

を取得

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

恐ろしい男は、あなたのコードは正常に動作。 – Mahi

0

複数のデータベース接続を使用する最新のCI Docsによれば、$ this-> db-> query()でDBを呼び出すべきではありません。しかし、あなたはあなたのexmapleのように作る接続ごとに返されるDBオブジェクトに:

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

これTRUEフラグは、DBオブジェクトを返すために、CIに指示されて、あなたは今、あなたがこのDB接続を使用sholudの$ db_analに格納されていますas $ 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(); 
+0

残念ですが、 'tab_1'は2番目のデータベースにないデフォルトデータベースにあります。 – Mahi

関連する問題