使用MSSQL和MySQL使用CodeIgniter(Use MSSQL and MySQL wit

2019-10-21 03:55发布

我想我的应用程序连接到两个数据库。 一个是MySQL的,一个是MSSQL。 我试图找到开始在谷歌的地方,但我没有成功。 我没有发现任何类似挖掘在计算器上前面的问题是有用的。

难道你们中的任何连接CI应用与MySQL和MSSQL?

Answer 1:

你可以把类似这样的例子的application / config / database.php中你的数据库的配置:

$active_group = "default";
$active_record = TRUE;

/*MYSQL DB config EXMPALE */
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'username';
$db['default']['password'] = 'pass';
$db['default']['database'] = 'DATABASE_NAME';
$db['default']['dbdriver'] = 'mysqli';
//...


/* MSSQL DB config EXMPALE, note the first param my_mssql */

$db['my_mssql']['hostname'] = 'SQL SERVER IP';
$db['my_mssql']['username'] = 'username';
$db['my_mssql']['password'] = 'pass';
$db['my_mssql']['database'] = 'DATABASE_NAME';
$db['my_mssql']['dbdriver'] = 'mssql';
//...

请注意,我们做出了默认的组是mysql的,所以如果你调用$这个 - > DB-> ..它会使用默认的组DB。

与另一个连接前查询。 MSSQL,您将添加这样的事情在你的模型

class example_model extends CI_Model
{
    var $mssql;
    function __construct()
    {
        parent::__construct();
        $this->mssql = $this->load->database ( 'my_mssql', TRUE );
    }

    function get_some_mssql_rows(){
       //use $this->mssql instead of $this->db
       $query = $this->mssql->query('select * from mssql_table');
       //...
    }

    function get_some_mysql_rows(){
       //use  $this->db for default 
       $query = $this->db->query('select * from mysql_table');
       //...
    }
}

您可以使用此方法对于很多DBS连接例如像读副本



Answer 2:

你只需要在“应用程序/配置/ database.php中”文件中添加这两种数据库连接的详细信息。 确保你正确设置dbdriver领域各,即“MySQL的”和“MSSQL”。



Answer 3:

我得到了它使用下面的设置工作

在database.php中的文件放在下面。 注意替换占位两个CONFIGS主机名,用户名,密码和数据库。

active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'xxx.xxx.xxx.xxx',
    'username' => '<username>',
    'password' => '<password>',
    'database' => '<database>',
    'dbdriver' => 'mysqli',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

$db['MSSQL'] = array(
    'hostname' => '<MSSQLHOSTIP\INSTANCE>',
    'username' => '<mssqluser>',
    'password' => '<mssqlpassword>',
    'database' => '<mssqldatabasename>',
    'dbdriver' => 'sqlsrv',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

其次配置采用MSSQL作为组名,这将被用来装载DB在下面的模型类。 我试图用更少的选项配置,它不会加载所以我用所有的选项从默认的配置

定义一个类变量var $mssql并使用在构造初始化$this->mssql = $this->load->database ( 'MSSQL', TRUE );

class User_model extends CI_Model
{
    var $mssql;

    function __construct()
    {
        parent::__construct();
         $this->mssql = $this->load->database ( 'MSSQL', TRUE );
    }

    function GetUsers(){

        $query = $this->mssql->query('Select * from [YOURTABLE]');

        $res = $query->result();

        return $res;    
    }
}

结果作为对象返回的数组。

希望这可以帮助别人



Answer 4:

尝试这个:

$db['default'] = array(
'dsn'    => 'sqlsrv:server=127.0.0.1,1433;Database=YourDatabaseName',
'hostname' => '',
'username' => '',
'password' => '',
'database' => 'YourDatabaseName',
'dbdriver' => 'sqlsrv',
'save_queries' => TRUE);


文章来源: Use MSSQL and MySQL with CodeIgniter