2013-07-08 66 views
0

我知道有幾個問題是類似於這個問題,但不知何故我無法讓它的工作,我一直在四處尋找解決方案,但不幸的是我找不到任:CodeIgniter數據鏈接與MySQL和MSSQL

情況: 我有內置的CodeIgniter框架的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; 

我可以訪問並獲得使用這種從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: 控制器: $ this-> load-> model('transaction_model'); $ result = $ this-> transaction_model-> MSQL_Transaction(); $ print_r($ result);

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進行更新。到目前爲止它只返回沒有顯示任何錯誤的空白網頁。非常感謝你提前。我只是顯示選擇查詢因爲我覺得它最容易理解,如果任何人都可以給我一個樣本,應該怎麼做,它會真的幫助很多。

歡呼聲。

+0

現在的SQL Server與SQLSRV連接,嘗試此頁的說明http://php.net/manual/en/book。 sqlsrv.php – Sundar

+0

http://www.php.net/manual/en/intro.mssql.php mssql在PHP5.3上不可用 – Sundar

回答

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

感謝您的回覆,我必須找到其他方式,而不是使用推送數據後面的代碼我不得不使用MySQL將它推送到MSSQL。 – Ponce

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;