Php CodeIgniter为mssql dbs设置多个连接?

Php CodeIgniter为mssql dbs设置多个连接?,php,sql-server,codeigniter,Php,Sql Server,Codeigniter,我已经对CI框架感到厌烦了,因为我甚至不能为MSSQL服务器设置多个连接。我发现了一个论坛,其中描述了如何设置多个连接,但对我来说效果不好-mssql_查询语句抛出一个错误,即链接标识符不是mssql链接资源等。 我做过这样的事情: 1) 设置database.php-数据库配置文件: $active_group = 'suburb'; $active_record = FALSE; $db['suburb']['hostname'] = 'XXXXXXXX'; $db['suburb']['

我已经对CI框架感到厌烦了,因为我甚至不能为MSSQL服务器设置多个连接。我发现了一个论坛,其中描述了如何设置多个连接,但对我来说效果不好-mssql_查询语句抛出一个错误,即链接标识符不是mssql链接资源等。 我做过这样的事情:

1) 设置database.php-数据库配置文件:

$active_group = 'suburb';
$active_record = FALSE;

$db['suburb']['hostname'] = 'XXXXXXXX';
$db['suburb']['username'] = 'XXXX';
$db['suburb']['password'] = 'XXXXXXX';
$db['suburb']['database'] = 'XXXXXXX';
$db['suburb']['dbdriver'] = 'mssql';
$db['suburb']['dbprefix'] = '';
$db['suburb']['pconnect'] = TRUE;
$db['suburb']['db_debug'] = TRUE;
$db['suburb']['cache_on'] = FALSE;
$db['suburb']['cachedir'] = '';
$db['suburb']['char_set'] = 'utf8';
$db['suburb']['dbcollat'] = 'utf8_general_ci';
$db['suburb']['swap_pre'] = '';
$db['suburb']['autoinit'] = TRUE;
$db['suburb']['stricton'] = FALSE;

$active_group = 'default';
$active_record = FALSE;

$db['default']['hostname'] = 'XXXXXX';
$db['default']['username'] = 'XXXX';
$db['default']['password'] = 'XXXXXXXX';
$db['default']['database'] = 'XXXXXX';
$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;
2) 调用load dbs函数:

$this->suburbDb = $this->load->database('suburb', true);
3) 已创建查询:

$res = mssql_query("
  SELECT TOP 100 ID 
  FROM Table", $this->suburbDb);

您正在混合使用CI和php本机mssql驱动程序

$this->suburbDb
是CI数据库对象而不是链接标识符:

$this->suburbDb->query('SELECT TOP 100 ID FROM Table');

或者如果你真的需要的话

mssql_query($query, $this->suburbDb->conn_id)

您应该使用类似这样的方法初始化两个连接

$this->suburb  = $this->load->database('suburb', TRUE);
$this->default = $this->load->database('default', TRUE); 

$this->db; //<--- houlds the DEFAULT loaded from config file. can only be one

$query = $this->suburb->query('SELECT TOP 100 ID FROM Table');

foreach( $query->result() as $row)
{
....
}

观察你的圆锥,你有两个活跃的小组。这是不可能的,您需要删除第二组$active_group,$active_recordinterest point$this->suburbDb是CI数据库对象而不是链接标识符,但是我可以在php中使用标准sql查询函数,比如mssql_query($query,$link);?当然,你可以使用
mssql_查询($query,$this->suburbd->conn_id)
你已经从我这里得到了你所能得到的一切-我是关于分数的,接受答案并发表评论,谢谢。你的答案很好,但我不想使用活动记录,也许你知道如何像mssql_查询($query,$link)那样使用standart sintax吗;?建立连接后尝试此操作:$version=mssql_query('SELECT@@version')$行=mssql_获取_数组($version);echo$行[0];//清理mssql_免费_结果($version);
// Send a select query to MSSQL
$query = mssql_query('SELECT TOP 100 ID FROM Table', $this->suburb );

// Check if there were any records
if (!mssql_num_rows($query)) {
    echo 'No records found';
} else {
    while ($row = mssql_fetch_array($query)) {
        echo $row['username'], PHP_EOL;
    }
}

// Free the query result
mssql_free_result($query);