CodeIgniter установил несколько подключений для баз данных mssql?


Я уже так устал от платформы CI, потому что я даже не могу установить несколько соединений для сервера MSSQL. Я нашел форум, где было описано, как установить множественное соединение, но для меня это не сработало - оператор mssql_query выдает ошибку, что идентификатор ссылки не является ресурсом MSSQL-Link и т. Д.. Я сделал что-то вроде этого:

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) вызовите базу данных загрузки функция:

$this->suburbDb = $this->load->database('suburb', true);

3) создал запрос:

$res = mssql_query("
  SELECT TOP 100 ID 
  FROM Table", $this->suburbDb);
Author: Ozair Kafray, 2011-07-11

2 answers

Вы смешиваете CI и собственный драйвер mssql php.

$this->suburbDb является ли объект базы данных CI не идентификатором ссылки:

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

Http://codeigniter.com/user_guide/database/queries.html

ИЛИ если вам действительно нужно, то

mssql_query($query, $this->suburbDb->conn_id)
 2
Author: Imre L, 2011-07-11 10:21:24

Вы должны инициализировать оба соединения чем-то вроде этого

$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)
{
....
}

Должно быть что-то в этом роде.

ПС. проверьте руководство по кодированию: Руководство по кодированию Подключение к базе данных

[РЕДАКТИРОВАТЬ: БЕЗ АКТИВНОЙ ЗАПИСИ]

После установления соединения mssql должно быть возможно выполнить само по себе следующим образом:

// 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);
 3
Author: DonSeba, 2011-07-11 09:39:20