2014-04-11 68 views
0

我們在yii框架中使用config.php文件中定義的mysql db連接來處理應用程序。 由於某種原因,我們想連接到其他服務器的MySQL數據庫。我所能做的只是這種方式(不使用存在的連接):我可以建立一個替代數據庫連接,儘管現有的Yii框架數據庫連接

public function init_db() 
{ 
    $db_handler = mysqli_connect('http://xxx.xxx.xxx.xxx', 'name', 'password', 'db_name'); 
    $db_handler->set_charset('utf8'); 

    // check connection 
    if (mysqli_connect_errno()) { 
     throw new Exception ("Error connecting to DB : " . mysqli_connect_error() ); 
    }    

    // set autocommit to off 
    mysqli_autocommit($db_handler, FALSE); 

    mysqli_query ($db_handler, "set time_zone='Europe/Minsk'"); 

    return $db_handler; 
} 

正如我嘗試它,我得到的錯誤: mysqli_connect(): php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known

在這條線$db_handler = mysqli_connect('http://xxx.xxx.xxx.xxx', 'name', 'password', 'db_name');

有任何解決方法,黑客獲得短時間連接從外部服務器(不是本地主機)獲取一些數據?

UPDATE

我剛剛進入這個運行tread。 但當我嘗試:

$connection=new CDbConnection($dsn,$username,$password); 
$connection->active=true; 

的警予的問題CDbException:

CDbConnection failed to open the DB connection: could not find driver

回答

1

在您的配置文件添加另一連接設置:

'db' => array(
     'connectionString' => 'mysql:host=127.0.0.1;dbname=test', 
     .... 
    ), 
    'otherDb' => array(
     'connectionString' => 'mysql:host=127.0.0.1;dbname=test2', 
     .... 
    ), 

而且使用它像Yii的: :app() - > otherDb

+0

我應該禁用現有的連接wh建立新的? –

+0

沒有,你可以使用他們兩個,但如果你想與其他連接到工作模式,你必須重新定義ActiveRecord的模型 – Alex

+0

我照你sugested的方法getDbConnection卻無濟於事: CDbException: CDbConnection未能打開數據庫連接:SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo失敗:主機名或服務器名提供,或不知道。 可能是我的connectionString是錯誤的:''connectionString'=>'mysql:host = http://xxx.xx.xx.xxx; dbname = some_name','? –