CodeIgniter Datalink同时包含MySQL和MSSQL

时间:2013-07-08 11:24:31

标签: php mysql codeigniter multiple-databases data-linking

我知道有几个问题与这个问题类似,但不知怎的,我无法让它发挥作用,我一直在寻找解决方案,但不幸的是我找不到:

情况: 我有一个内置在CodeIgniter Framework中的Web应用程序,目前它可以将记录保存到自己的MySQL数据库(DB1)中,我还需要创建另一个数据链接到另一个数据库,这是一个MSSQL,它将作为我们的分类帐,让我们调用那个数据库DB2。

我试过了:

$active_group = 'default';
$active_record = TRUE;
$db['MSSQL']['hostname'] = 'xxx.xxx.xxx.xxx\SQLEXPRESS';
$db['MSSQL']['port'] = 1433;
$db['MSSQL']['username'] = 'sa';
$db['MSSQL']['password'] = 'xxxxxxxxxxxxxx';
$db['MSSQL']['database'] = 'DB2';
$db['MSSQL']['dbdriver'] = 'mssql';
$db['MSSQL']['dbprefix'] = '';
$db['MSSQL']['pconnect'] = FALSE;
$db['MSSQL']['db_debug'] = TRUE;
$db['MSSQL']['cache_on'] = FALSE;
$db['MSSQL']['cachedir'] = '';
$db['MSSQL']['char_set'] = 'utf8';
$db['MSSQL']['dbcollat'] = 'utf8_general_ci';
$db['MSSQL']['swap_pre'] = '';
$db['MSSQL']['autoinit'] = TRUE;
$db['MSSQL']['stricton'] = FALSE;

$db['default']['hostname'] = '127.0.0.1';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'DB1';
$db['default']['dbdriver'] = 'mysqli';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

我可以在Model:

中使用它来访问和获取DB1中的记录
class Transaction_model extends CI_Model{
function __construct(){
parent::__construct();}

public function get_transaction(){
$default_db = $this->load->database('default',TRUE);
$qry_res = $default_db->query("CALL sp_view_transaction()");
$res = $qry_res->result();
$qry_res->next_result();
$qry_res->free_result();
$return $res;

class Transaction extends My_Controller{
public function index(){
parent::__construct();}
public function get_transaction(){
$this->load->model('transaction_model');
$result = $this->transaction_model->get_transaction();
print_r($result);

但是当我尝试为MSSQL运行存储过程时,问题就开始出现了:      控制器:      $这 - >负载>模型( 'transaction_model');      $ result = $ this-> transaction_model-> MSQL_Transaction();      $的print_r($结果);

Model:
Public function MSQL_Transaction(){
$db = $this->load->database('MSSQL',TRUE);
$qry = $db->query("EXEC sp_view_list 1");
$res = $qry->result();
$qry->next_result();
$qry->free_result();
return $res;

任何人都可以告诉我应该怎么做?我在DB1中成功插入记录时需要对DB2进行更新。到目前为止它只返回没有显示任何错误的空网页。非常感谢你提前。我只是显示选择查询因为我发现它最容易理解,如果有人能给我一个关于它应该如何完成的样本,它将真的有很多帮助。

欢呼声。

2 个答案:

答案 0 :(得分:0)

在将sqlsrv驱动程序支持安装到服务器之前尝试此配置

<?php 

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'xxxxxxxxxxxxxxxxxx\SQLEXPRESS';
$db['default']['username'] = 'sa';
$db['default']['password'] = 'xxxxxxxxxxxxxx';
$db['default']['database'] = 'database_name';
$db['default']['dbdriver'] = 'sqlsrv';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = FALSE;
$db['default']['stricton'] = FALSE;

答案 1 :(得分:0)

$active_group = 'default';

$active_record = TRUE;

$db['default']['hostname'] = '1xx.xxx.xx.x6x\SQLEXPRESS';

$db['default']['username'] = 'sa';

$db['default']['password'] = 'password';

$db['default']['database'] = 'databasename';

$db['default']['dbdriver'] = 'mssql';

$db['default']['dbprefix'] = '';

$db['default']['pconnect'] = TRUE;

$db['default']['db_debug'] = TRUE;

$db['default']['cache_on'] = FALSE;

$db['default']['cachedir'] = '';

$db['default']['char_set'] = 'utf8';

$db['default']['dbcollat'] = 'utf8_general_ci';

$db['default']['swap_pre'] = '';

$db['default']['autoinit'] = TRUE;

$db['default']['stricton'] = FALSE;
相关问题