【问题标题】:Multiple database in codeigniter projectcodeigniter项目中的多个数据库
【发布时间】:2012-11-23 03:30:31
【问题描述】:

我在 codeigniter 中开发了一个应用程序。我的申请中有一个类似论坛的部分。 为此,我想为该控制器创建一个单独的数据库。

这样我就可以很容易地维护网站和数据库。 我的问题可能是在 codeigniter 中将数据库分配给单个控制器?

谢谢

【问题讨论】:

    标签: database codeigniter codeigniter-2


    【解决方案1】:

    正如 manix 的回答中提到的,您可以将设置传递给数据库库构造函数。

    但是遗漏的是,您必须将true 指定为第二个参数,并将输出捕获到一个变量中。

    $DB1 = $this->load->database('group_one', TRUE);
    $DB2 = $this->load->database('group_two', TRUE);
    

    不这样做意味着您一次只能使用一个数据库,因为它会替换数据库连接而不是打开一个新的连接!

    请注意,我们传入的字符串 group_onegroup_two 是数据库设置组(在您的配置文件中,您通常只有 default 组)。

    您可以使用一组配置选项替换组名,但最好使用组!

    然后您可以将查询运行为

    //query against first database
    $DB1->select(...
    
    //query against second database
    $DB2->select(...
    

    您可以使用$DB2->close();$DB1->close(); 关闭其中一个连接

    更多信息可以在userguide找到

    【讨论】:

      【解决方案2】:

      你可以pass the database connection to the constructor:

      $config['hostname'] = "localhost";
      $config['username'] = "myusername";
      $config['password'] = "mypassword";
      $config['database'] = "mydatabase";
      $config['dbdriver'] = "mysql";
      $config['dbprefix'] = "";
      $config['pconnect'] = FALSE;
      $config['db_debug'] = TRUE;
      $config['cache_on'] = FALSE;
      $config['cachedir'] = "";
      $config['char_set'] = "utf8";
      $config['dbcollat'] = "utf8_general_ci";
      
      $this->load->database($config);
      

      【讨论】:

        【解决方案3】:

        copy and paste at database.php
        
        //Another database connection.
        $db['database2']['hostname'] = 'localhost';
        $db['database2']['username'] = 'root';
        $db['database2']['password'] = '';
        $db['database2']['database'] = 'dbname2';
        $db['database2']['dbdriver'] = 'mysql';
        $db['database2']['dbprefix'] = '';
        $db['database2']['pconnect'] = FALSE;
        $db['database2']['db_debug'] = TRUE;
        $db['database2']['cache_on'] = FALSE;
        $db['database2']['cachedir'] = '';
        $db['database2']['char_set'] = 'utf8';
        $db['database2']['dbcollat'] = 'utf8_general_ci';
        $db['database2']['swap_pre'] = '';
        $db['database2']['autoinit'] = TRUE;
        $db['database2']['stricton'] = FALSE;
        
        //how to use the second database which is configured
        $CI= &get_instance();
        //set the second parameter to TRUE.
        $this->db2 = $CI->load->database('database2', TRUE);
        $qry= $this->db2->query("SELECT * FROM db2tables");
        var_dump($qry->result());

        更多详情请参考以下链接 http://quandaflow.com/two-databases-connections-codeigniter/

        【讨论】:

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