0
我需要建立一個連接到數據庫並在我的PHP文件中的任何地方使用它。我瞭解包括,但也許我不完全。如果我使用連接到數據庫的功能創建PHP文件併爲其留下一個變量,那麼將該文件包含在2個PHP文件中。會有2個連接嗎?我怎樣才能建立一個連接並在任何地方使用變量?包括和MySQL
另請注意,我打算使用PDO,如果您提供PDO語法的幫助,會更好。
我需要建立一個連接到數據庫並在我的PHP文件中的任何地方使用它。我瞭解包括,但也許我不完全。如果我使用連接到數據庫的功能創建PHP文件併爲其留下一個變量,那麼將該文件包含在2個PHP文件中。會有2個連接嗎?我怎樣才能建立一個連接並在任何地方使用變量?包括和MySQL
另請注意,我打算使用PDO,如果您提供PDO語法的幫助,會更好。
無論頁面加載中包含多少個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 ...
}
只要每個PHP文件只包括連接文件一次,然後它不會創建另一個實例的變量,但我想象你的PHP文件會聲明像$ db = connection這樣的變量,所以我們被覆蓋的變量 – Sephedo
每次包含PHP文件或只允許訪問變量時,它會建立一個新的連接嗎?這是我真正的問題。 – user3466209
是的,每次腳本結束時變量都會隨着它一起結束 - 連接也是如此,因此當新頁面被訪問時它將會斷開連接並創建一個新連接,除非您將連接存儲在會話或cookie中,但我不建議這樣做 – Sephedo