用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7556|回复: 13
收起左侧

[已解决] 多个数据库问题

[复制链接]
发表于 2010-1-28 15:59:31 | 显示全部楼层 |阅读模式
本帖最后由 残翅 于 2010-1-29 14:24 编辑

我要操作两个数据库,模型里这么写:
private $db_invest;
private $db_register;
function __construct(){
  parent::Model();
  $this->db_invest = $this->load->database('default',TRUE);
  $this->db_register = $this->load->database('db_2',TRUE);
}
数据库链接信息都正确,我在方法里用$this->db_invest->where()这么操作数据时,数据库却是db_2这个,不知道什么原因,我这么写不对吗?搞了好久都搞不好,请大家帮忙解决下,谢谢
发表于 2010-1-28 16:23:12 | 显示全部楼层
这么写看起来没问题啊
发表于 2010-1-28 16:23:59 | 显示全部楼层
看看你的配置文件是不是弄反了
 楼主| 发表于 2010-1-28 17:10:58 | 显示全部楼层
回baiyuxiong,没有弄反
private $db_invest;
private $db_register;
function __construct(){
  parent::Model();
  $this->db_invest = $this->load->database('default',TRUE);
  //$this->db_register = $this->load->database('db_2',TRUE);
}
我把后面的那个数据库链接注释掉,就不会出错了,链接的是第一个数据库
但加上后就报错说后面那个数据库中没有XXX表,但XXX表是属于第二个数据库的,现在的问题就是加了这么一句后自动把第一个数据库覆盖掉了,我用的变量还是$this->db_invest
发表于 2010-1-28 17:20:20 | 显示全部楼层
翻了一下手册,看最后几句话:
连接多数据库
如果你需要同时连接多于一个的数据库,你可以用以下方式来实现:

$DB1 = $this->load->database('group_one', TRUE);
$DB2 = $this->load->database('group_two', TRUE);
注意:改变 "group_one" 和 "group_two" 为你指定了连接属性的组名 (或者通过上边说过的连接数组的数组名)。

通过设置函数的第二个参数为TRUE(boolean)来返回一个数据库对象。

当你使用这种方法,你将用对象名来执行操作命令而不是用户向导模式,也就是说,你将用以下方式执行数据库操作:

$DB1->query();
$DB1->result();
etc...

而不是:

$this->db->query();
$this->db->result();
etc...
发表于 2010-1-29 08:17:50 | 显示全部楼层
楼上正解
 楼主| 发表于 2010-1-29 08:42:52 | 显示全部楼层
我就是按照手册里做的,下面是我模型里的一个方法,用得是第一个数据库对象,但是在构造函数里加了$this->db_register = $this->load->database('db_2',TRUE);这句后,就提示:Error Number: 1146

Table 'register.invest_info' doesn't exist

那我的这个invest_info表格是在第一个数据库里的,当然不存在于register数据库了。而且,我另外新建一个模型,新建的模型里调用第二个数据库,也是出现同样的错误在一个控制器里调用两个模型时第二个模型会把第一个覆盖吗?
function get_all_list($array,$order,$table){
                $this->db_invest->where($array);
                foreach($order as $key=>$value){
                        $this->db_invest->order_by($key,$value);
                }
                $query = $this->db_invest->get($table);
                return $query->result_array();
        }
 楼主| 发表于 2010-1-29 08:44:16 | 显示全部楼层
请大家指点一下啊,谢谢了,我自己也继续研究下,哎,郁闷的问题
发表于 2010-1-29 09:46:16 | 显示全部楼层
这个不排除是 CI 的 BUG,楼主应该看一下 CI 这部分的源码。
发表于 2010-1-29 11:41:37 | 显示全部楼层
我在四楼回的方式你试过没?
不能用
$this->db->query();
$this->db->result();
而要用:
$DB1->query();
$DB1->result();

本版积分规则