munal连接数据库CodeIgniter

时间:2012-04-15 17:51:35

标签: codeigniter codeigniter-datamapper

我需要连接许多数据库 database.php中的主要连接

没有问题

但另一个连接必须在Model

我使用这个类

<?php
class user_model extends CI_Model {

        public function test()
        {
        $specific['hostname'] = "localhost";
        $specific['username'] = "root";
        $specific['password'] = "";
        $specific['database'] = "ci_forsyria";
        $specific['dbdriver'] = "mysql";
        $specific['dbprefix'] = "";
        $specific['pconnect'] = FALSE;
        $specific['db_debug'] = TRUE;
        $specific['cache_on'] = FALSE;
        $specific['cachedir'] = "";
        $specific['char_set'] = "utf8";
        $specific['dbcollat'] = "utf8_general_ci";

        $this->load->database($specific);

        //get data using datamapper
        $o = new db_user();
        $array = array();
        $o->where($array)->get();
        echo $num_rows = $o->result_count();
        }
}
?>

但连接不起作用 它仍然与主数据库连接

错误号码:1146 表'countries.ci_users'不存在

注意:我不喜欢data.php文件中的其他连接,因为我有超过100个连接

2 个答案:

答案 0 :(得分:1)

我相信CI会认为您已经有可用的连接,并且它不使用您指定的参数。

尝试在连接新配置之前键入$this->db->close();来关闭默认连接。

否则,您应该通过将第二个参数设置为TRUE,使用manual中指定的新配置返回数据库对象的新实例。您应该能够使用返回的对象:

$specific_db =  $this->load->database($specific, TRUE);

答案 1 :(得分:1)

在回应你对Repox的评论时,你肯定一定是错误的。他的最后一个解决方案必须有效,我会不断地使用它。你能展示一个对象的“new db_user()”,你可以使用通用数据库吗?

注意:在此处留下结束标记,这是一个模型:

  

对于仅包含PHP代码的文件,结束标记(“?&gt;”)永远不会   允许的。它不是PHP所要求的,省略它会阻止它   意外地将尾随的白色空间注入响应中。

试试这个例子,它应该从countries表中返回30个值。

<?php
class user_model extends CI_Model {
    public function test()
    {
    $specific['hostname'] = "localhost";
    $specific['username'] = "root";
    $specific['password'] = "";
    $specific['database'] = "ci_forsyria";
    $specific['dbdriver'] = "mysql";
    $specific['dbprefix'] = "";
    $specific['pconnect'] = FALSE;
    $specific['db_debug'] = TRUE;
    $specific['cache_on'] = FALSE;
    $specific['cachedir'] = "";
    $specific['char_set'] = "utf8";
    $specific['dbcollat'] = "utf8_general_ci";

    $specific_db = $this->load->database($specific, TRUE);

    $example_query = $specific_db->query('SELECT * FROM countries LIMIT 0,30')->result();

    return var_dump($example_query);
    }
}