我正在设置我的两个数据库
$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":空," CLIENT_INFO":空," client_version":空," connect_errno":空," connect_error":空,"错误号":空,"错误":空" error_list":空,"场计数":空," host_info":空,"信息":空," INSERT_ID& #34;:空," SERVER_INFO":空," SERVER_VERSION":空," STAT":空," SQLSTATE":空, " PROTOCOL_VERSION":空,"的thread_id":空," WARNING_COUNT":空}" result_id" {" current_field&# 34;:空,"场计数":空,"长度":空," NUM_ROWS":空,"类型":空}, " result_array":[]," result_object":[]," custom_result_object":[]," CURRENT_ROW":0,&#34 ; NUM_ROWS":空," ROW_DATA":空}" RES2" {" conn_id" {" affected_rows":空" CLIENT_INFO":空," client_version":空," connect_errno":空,"康恩ect_error":空,"错误号":空,"错误":空," error_list":空,"场计数":空" host_info":空,"信息":空," INSERT_ID":空," SERVER_INFO":空," SERVER_VERSION& #34;:空," STAT":空," SQLSTATE":空," PROTOCOL_VERSION":空,"的thread_id":空, " WARNING_COUNT":空}" result_id" {" current_field":空,"场计数":空,"长度&# 34;:空," NUM_ROWS":空,"类型":空}" result_array":[]," result_object":[ ]" custom_result_object":[]," CURRENT_ROW":0," NUM_ROWS":空," ROW_DATA":空},&# 34; RES3" {" conn_id" {" affected_rows":空," CLIENT_INFO":空," client_version":空" connect_errno":空," connect_error":空,"错误号":空,"错误":空," error_list& #34;:空,"场计数":空," host_info":空,"信息":空,&#3 4; INSERT_ID":空," SERVER_INFO":空," SERVER_VERSION":空," STAT":空," SQLSTATE" :空," PROTOCOL_VERSION":空,"的thread_id":空," WARNING_COUNT":空}" result_id" {&#34 ; current_field":空,"场计数":空,"长度":空," NUM_ROWS":空,"类型&#34 ;:空}" result_array":[]," result_object":[]," custom_result_object":[]," CURRENT_ROW":0, " NUM_ROWS":空," ROW_DATA":空}} TEQ:863:6
任何人都可以帮助我。
答案 0 :(得分:1)
问题是CI代码
根据docs,get返回一个(query-)结果对象
如果您想要数据,请尝试以下
$objQuery = $db_anal->select('*')->from('tab_3')->where('User_id',$user)->get();
if ($objQuery->num_rows() > 0)
{
$query1['res3'] = $objQuery->result();
}
答案 1 :(得分:0)
根据最新的CI Docs使用多个数据库连接,您不应该使用$ this-> db-> query()调用DB,而是使用返回的DB对象为您在exmaple中创建的每个连接:
$db_anal = $this->load->database('User_DB', TRUE);
这个TRUE标志指示CI返回DB对象,并将它存储在$ db_anal中,所以现在你sholud使用这个数据库连接为$ 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();