CodeIgniter框架同时连接多个数据库

PHP piniu 713浏览 0评论

一 、配置数据库

1. 描述:CodeIginter有一个配置文件让你存放数据库连接值(username:用户名,password:密码,database name:数据库名,等等……)
2. 文件位置:该配置文件位于application/config/database.php
3. 注意事项:除默认数据库外其他的数据库的pconnect键名对应的键值为FALSE
4. 示例:

$active_group = 'default';
    $active_record = TRUE;
 
    $db['default']['hostname'] = 'localhost';    //数据库的主机名,通常位于本机,可以表示为“localhost”
    $db['default']['username'] = 'root';    //需要连接到数据库的用户名
    $db['default']['password'] = '123456';    //登陆数据库的密码
    $db['default']['database'] = 'db1';    //你需要连接的数据库名
    $db['default']['dbdriver'] = 'mysql';    //数据库类型。例如:mysql,postgres,odbc等。必须以小写字母
    $db['default']['dbprefix'] = '';     //当运行Active Record查询时数据表的前缀,它允许在一个数据库连接上安装多个CodeIgniter程序
    $db['default']['pconnect'] = TRUE;    // TRUE/FALSE(boolean)-使用持续链接
    $db['default']['db_debug'] = TRUE;    //TRUE/FALSE(boolean)-显示数据库错误信息
    $db['default']['cache_on'] = FALSE;    //TRUE/FALSE(boolean)-数据库查询缓存是否开启。详情见CodeIgniter数据库缓存类
    $db['default']['cachedir'] = '';    //数 据库查询缓存目录所在服务器 绝对路径
    $db['default']['char_set'] = 'utf8';    //与数据库通信时所使用的字符集
    $db['default']['dbcollat'] = 'utf8_general_ci';    //与数据库通信时所使用的字符规则
    $db['default']['swap_pre'] = '';    //替换默认的dbprefix表前缀,该设置项对于分别式应用是非常有用的,你可以查询中使用由最终用户定制的表前缀
    $db['default']['autoinit'] = TRUE;    //当数据库(database library)被载入的时候是否需要自动连接数据库,如果设置为FALSE, 将在首次查询前进行连接
    $db['default']['stricton'] = FALSE;    //TRUE/FALSE(boolean)-是否强制使用“Strict Mode”链接,在开发程序时,使用strict SQL是一个好习惯
 
    $db['db2']['hostname'] = 'localhost';
    $db['db2']['username'] = 'root';
    $db['db2']['password'] = 123456';
    $db['db2']['database'] = 'db2';
    $db['db2']['dbdriver'] = 'mysql';
    $db['db2']['dbprefix'] = '';
    $db['db2']['pconnect'] = FALSE;    //特别注意哦
    $db['db2']['db_debug'] = TRUE;
    $db['db2']['cache_on'] = FALSE;
    $db['db2']['cachedir'] = '';
    $db['db2']['char_set'] = 'utf8';
    $db['db2']['dbcollat'] = 'utf8_general_ci';
    $db['db2']['swap_pre'] = '';
    $db['db2']['autoinit'] = TRUE;
    $db['db2']['stricton'] = FALSE;

二、在model中连接数据库

1. 示例:

class test_model extends CI_Model{
    var $db_connect1;
    var $db_connect2;
    public function __construct(){
        parent::__construct();
        $this->db_connect1 = $this->load->database('default', TRUE);
        $this->db_connect2= $this->load->database ('db2', TRUE);
    }
    public function get_db1($date){
        $query = $this->db_connect1->query("SELECT * FROM db1 where date='$date'");
        return $query->row_array();
    }
    public function get_db2($date){
        $query = $this->db_connect2->query("SELECT * FROM db2 where date='$date'");
        return $query->row_array();
    }
}

附:

如果在一个controller文件中,想对应多model 文件(每个model对应的数据库不同),可在controller下的控制中加载多个model。 如:

//数据列表类
class dataList extends MY_Controller{
 
	//构造函数
    public function __construct(){
        parent::__construct();
        $this->load->model('navigation_model', 'navigation');
        $this->load->model('classify_model', 'classify');
 
    }
 
	//获取导航列表
    public function navList(){
      
		$data = $this->navigation->showList();
		print_r($data);
 
    }
	
	//获取分类列表
	public function clasList(){
      
		$data = $this->classify->showList();
		print_r($data);
 
    }
	
}

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • * 昵称:
  • * 邮箱: