2014-03-27 56 views
0

我需要建立一個連接到數據庫並在我的PHP文件中的任何地方使用它。我瞭解包括,但也許我不完全。如果我使用連接到數據庫的功能創建PHP文件併爲其留下一個變量,那麼將該文件包含在2個PHP文件中。會有2個連接嗎?我怎樣才能建立一個連接並在任何地方使用變量?包括和MySQL

另請注意,我打算使用PDO,如果您提供PDO語法的幫助,會更好。

+0

只要每個PHP文件只包括連接文件一次,然後它不會創建另一個實例的變量,但我想象你的PHP文件會聲明像$ db = connection這樣的變量,所以我們被覆蓋的變量 – Sephedo

+0

每次包含PHP文件或只允許訪問變量時,它會建立一個新的連接嗎?這是我真正的問題。 – user3466209

+1

是的,每次腳本結束時變量都會隨着它一起結束 - 連接也是如此,因此當新頁面被訪問時它將會斷開連接並創建一個新連接,除非您將連接存儲在會話或cookie中,但我不建議這樣做 – Sephedo

回答

1

無論頁面加載中包含多少個php文件,每次加載時數據庫都會連接。

因此,您可以將連接數限制爲每頁加載一個。

爲了做到這一點,您可以創建一個連接文件,包含沿着線的東西:

$user = 'database_username'; 
$pass = 'a_Hard_Password'; 
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); 

然後,您將保存文件,並將其命名爲像db.php或類似的東西。

然後,在哪個文件需要使用數據庫,將包括文件一次利用require_once如下:

require_once 'db.php'; 

$results = $db->query('SELECT * FROM my_table'); 
foreach($results AS $row) { 
    var_dump($row); 
} 

有很多很好的資源,在那裏,這是簡單的例子,但是對於更復雜的查詢,的PDO的優點之一是綁定參數,如下所示:

$id = 5; // Or some other useful value 
$name = 'James'; // Or your desired query value 
$stmt = $db->prepare("SELECT * FROM my_table WHERE id=? AND name=?"); 
$stmt->execute(array($id, $name)); 
$results = $stmt->fetchAll(PDO::FETCH_ASSOC); 
foreach($results AS $row) { 
    // The PDO::FETCH_ASSOC parameter tells it to return an associative array... 
    echo $row['id']; 
    echo $row['name']; 
    // ... etc ... 
}