2013-11-25 63 views
-1

我正在使用這個簡單函數連接到named_database。但是代碼及其相關項目在多個站點上使用。我厭倦了不斷的修改DB_PASS設置等使用共享代碼選擇不同本地主機數據庫的方法

function select_named_db() 
{ 

    $link = mysqli_connect(DB_HOST, DB_USER, DB_PASS); 
    $result=mysqli_select_db($link, DB_NAME ) ; 
    return $link; 
} 

我怎麼會改變我的功能,使其可以嘗試2個或3個不同的數據庫設置,以便腳本可以找出哪些主機,用戶和密碼設置爲使用?

會這樣簡單嗎?

if (!mysqli_connect(DB_HOST, DB_USER, DB_PASS)) 
    { 
     $link = mysqli_connect(DB_HOST, DB_USER, DB_PASS); 
    } elseif (!mysqli_connect(DB_HOST2, DB_USER2, DB_PASS2)) 
     { 
     $link=mysqli_connect(DB_HOST2, DB_USER2, DB_PASS2); 
     } 

還是有更好的程序方法?

回答

0

的settings.php:

if (ENV == 'dev') { 
    define('DB_HOST', 'localhost'); 
    // and so on 
} elseif(ENV == 'production') { 
    define('DB_HOST', '127.0.0.1'); 
    // and so on 
} 

然後在引導文件或Web服務器配置

+0

我看着這個。顯然,ENV的自動發現很大程度上取決於PHP和服務器的版本。 – Maelish

+0

沒有什麼可以自動發現的。而且這個方法本身就是一件小事,除了你自己以外,每個人都會使用它。 –

+0

沒有理由不禮貌。 – Maelish

0

某處定義ENV是不是更好的參數傳遞給select_named_db()?

你可以有DB連接的陣列:

$ DB_HOST [0] = ...

$ DB_USER [0] = ...

,並根據在那裏你調用頁面從,使用數據庫或其他。這個參數可以在函數中定義或在會話中傳遞,如你所願...

+0

是的,我打算做類似的事情,但通過'select_named_db('dbname')''。 – Maelish

+0

再次,你是粗魯的。如果你不能很好,請不要談這個問題。 – Maelish

+0

我認爲關鍵是你沒有理解他的問題,也許是因爲他沒有清楚地解釋它。無論如何,他現在有解決方案:) – MrReboot