2011-06-08 38 views
2
$dsn="mysql://$db_username:[email protected]$db_hostname/$db_database"; 
global $mdb2; 
$mdb2=MDB2::connect($dsn); 
if (PEAR::isError($mdb2)) 
{ 
    die($mdb2->getMessage()); 
} 

我這樣做是爲了連接到我的數據庫,我把這個叫做Connect.php一個單獨的PHP文件,並要求它在我的所有網頁。連接到MDB2在PHP對象

然而,當我有一個函數內部進行查詢,我將不得不$ MDB2傳遞給函數作爲參數?這是做到這一點的正確方法。

而且,我寫一個類,將查詢我的數據庫。我不知道做什麼(我不想把它作爲一個參數)

我一定要重新建立連接,每次(即寫連接的功能)

無法你使連接持久和全球?

回答

2

您可以在所有頁面上要求您的文件Connect.php,並且需要使用該連接的每個功能都可以參考global變量$mdb2

例如:

# In file Connect.php 

<?php 
$dsn="mysql://$db_username:[email protected]$db_hostname/$db_database"; 
$mdb2=MDB2::connect($dsn); 
if (PEAR::isError($mdb2)) 
{ 
    die($mdb2->getMessage()); 
} 


#In any other file 

<?php 
require_once "Connect.php"; 
getUser($id) { 
    global $mdb2; 
    $mdb2->query("SELECT ...."); 
} 

其他的解決方案是使用Singleton Class訪問數據庫,以便有總是返回引用您的$mdb2變量的函數。

當然,討論Global or Singleton for database connection?是值得一讀。

+0

真棒。我得到它的工作。 以供將來參考。這是我如何在班上工作。 在__construct ...把​​全球$ MDB2,給你設置$ MDB2作爲一個全局變量 – 2011-06-08 23:38:05

+1

感謝非常詳細的解決方案 – 2011-06-08 23:38:57