2013-01-18 156 views
0

我在localhost和遠程主機dev之間切換:我在localhost上測試它,然後我將這些文件複製到遠程的php。php訪問mysql本地主機和遠程主機

我有一個類MYDB,它將常量中的主機和用戶數據庫信息存儲起來。 如何聲明常量並寫入MYDB,以便我不必在這兩個訪問日期之間手動切換。而是,我想自動切換。 我使用:

host: localhost 
user: timo 
db: localhostdb 
pwd: ... 

host: remotehostname 
user: timo 
db: remotehostdb 
    pwd:.. 

之前,我切換到本地主機,我評論的遠程主機,反之亦然。不是很好。 有什麼想法? Timo

+1

由於本地主機可以在遠程和本地工作,因爲對於遠程主機通常是本地主機 –

回答

2

關於好。其他一些方法

  1. 一些人維持生產和本地測試之間不同的文件
  2. 你可以繞到了代碼,如果($生產)..否則.....然後自動設置生產變量。例如我們根據網址來做。如果該URL是生產URL,那麼$生產被設置爲生產。
3

我通過將憑證存儲在config.live.php文件中來處理此問題,該文件可以用存在的config.test.php文件覆蓋。

當包括配置:

require_once(file_exists('config.test.php') ? 'config.test.php' : 'config.live.php'); 

我把版本化config.live.php和SVN忽略config.test.php。這樣,測試文件永遠不會在生產中結束,任何簽出代碼副本的人都可以將live.php複製到新的test.php文件並更新其測試配置。

2

我如何解決它:

類MYDB {

private static $db; 

static public function getInstance($Start = false) { 

if ($_SERVER['SERVER_NAME'] == 'localhost') { 

/* $DB_HOST = 'localhost'; 
    $DB_DATABASE = ''; 

    $DB_USER = ''; 
    $DB_PASSWORD = ''; 
*/ 
    $aConnection = array('DB_HOST' => 'localhost', 'DB_DATABASE' => '', 'DB_USER' => '', 'DB_PASSWORD' => ''); 
} else { 

    $aConnection = array('DB_HOST' => 'd', 'DB_DATABASE' => '', 'DB_USER' => '', 'DB_PASSWORD' => $DB_PASSWORD); 

} 

    if (!self::$db) { 
     self::$db = new PDO('mysql:host=' . $aConnection['DB_HOST'] . ';dbname=' . $aConnection['DB_DATABASE'] , $aConnection['DB_USER'], $aConnection['DB_PASSWORD'], array(PDO::ATTR_PERSISTENT => true, 
     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
     PDO::ATTR_EMULATE_PREPARES => false, 
     PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC)); 
    } 

    echo mysql_error(); 

    if ($Start) 
     return $aConnection; 
    else #Normale pdo klasse 
     return self::$db; 
} 

}

所以,如果我需要一個正常的MySQL連接,我使用數組,如果我需要PDO,我用的是靜態數據庫變量。