【问题标题】:Codeigniter join from multiple databases来自多个数据库的 Codeigniter 连接
【发布时间】:2011-10-03 23:04:41
【问题描述】:

目前我的模型中有这个不起作用的代码:

$this->db_site->order_by('id', 'random');
$select = $this->db_site->get_where('berichten', array('beantwoord' => 0, 'gelezen' => 0));   
$this->db->join('replymessages', 'replymessages.msgid != berichten.id');
$this->db->join('replymessages', 'replymessages.time < '.time()); 

在这个例子中,连接不能用于 db_site 查询,有没有一种方法可以从其他数据库进行连接?

【问题讨论】:

    标签: php codeigniter join mysqli


    【解决方案1】:

    恐怕没有内置的方法来进行连接。如果数据库在同一个数据库实例中,并且您可以授予用户对两个数据库的访问权限,您可以通过在表上添加数据库名称的前缀来加入这种方式,即 database1.table1。

    另一种方法是使用仅在 php 中的解决方案来连接数据。

    【讨论】:

    • 感谢您的回复,但是您对仅使用 in-php 的解决方案是什么意思?能给我举个例子吗?不幸的是,数据库不属于同一个用户。所以为数据库名称添加前缀是行不通的:(
    【解决方案2】:

    在/config/database.php

    为数据库连接创建一组新配置

    $db['seconddb']['hostname'] = 'localhost';
    $db['seconddb']['username'] = 'krish';
    $db['seconddb']['password'] = 'pass';
    $db['seconddb']['database'] = 'oOoOoO';
    $db['seconddb']['dbdriver'] = 'mysql';
    $db['seconddb']['dbprefix'] = '';
    $db['seconddb']['pconnect'] = TRUE;
    $db['seconddb']['db_debug'] = TRUE;
    $db['seconddb']['cache_on'] = FALSE;
    $db['seconddb']['cachedir'] = '';
    $db['seconddb']['char_set'] = 'utf8';
    $db['seconddb']['dbcollat'] = 'utf8_general_ci';
    $db['seconddb']['swap_pre'] = '';
    $db['seconddb']['autoinit'] = TRUE;
    $db['seconddb']['stricton'] = FALSE;
    

    加载数据库

    $this->load->database('seconddb');
    

    连接多个数据库

    $db1 = $this->load->database('default', TRUE);
    $db2 = $this->load->database('seconddb', TRUE);
    

    对于活动记录,语法会改变一点。

    代替

    $this->db->query();
    

    你应该使用

    $db1->query();
    

    和

    $db2->query();
    

    所以,只需根据需要编辑您的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多