2011-07-11 14 views
2

私はMSフレームワークのために複数の接続を設定することさえできないので、CIフレームワークですでにうんざりです。私は複数の接続を設定する方法が記述されていたフォーラムを見つけましたが、うまく動作しませんでした - mssql_queryステートメントはというリンク識別子がMSSQL-Linkリソースなどではないというエラーをスローします。 私はこのような何かをやった:CodeIgniterはmssql dbsの複数接続を設定していますか?

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)負荷DBS関数を呼び出す:

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

3)作成をクエリ:

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

あなたconigを見て、あなたがアクティブ2を持っていますグループ。あなたは2番目のセットを削除する必要があります$ active_group、$ active_record – DonSeba

答えて

2

あなたは、CIとphpネイティブmssqlドライバを混在させています。

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

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

ORあなたが本当に

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

興味深いポイント$ this-> suburbDbはリンクデータベースの識別子ではないCIデータベースオブジェクトですが、何とかmssql_query($クエリ、$リンク);? –

+1

確かに、 'mssql_query($ query、$ this-> suburbDb-> conn_id)'を使うことができます。 –

+0

あなたは私からできること全てを持っています。 - 私はポイントについて、答えを受け取り、コメントします。 –

3

その後、必要な場合は、この

のようなものとの両方の接続を初期化する必要があります。

$this->suburbDbは、CIのデータベースオブジェクトではないリンク識別子であります

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

そうであるべきです。

PS。接続MSSQLを行った後

このように、それ自体で実行することが可能でなければなりません:[ACTIVE RECORDなしEDIT]:CodeIgniter Guide Database Connection

:CodeIgniterのガイドをご確認ください

// 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); 
+0

あなたの答えはかなり良いですが、私はアクティブなレコードを使用したくない、あなたはmssql_query($ query、$ link);のようなstandart sintaxの使い方を知っているかもしれません; –

+0

接続後にこれを試してください: $ version = mssql_query( 'SELECT @@ VERSION'); $行= mssql_fetch_array($バージョン); echo $ row [0]; //クリーンアップ mssql_free_result($ version); – DonSeba

+0

私はUをポイントアップしました、ありがとう –

関連する問題