所以我對PHP相當陌生,幾乎沒有問題。所以我有一個主要的索引頁面,其中包含頁眉和功能頁面。在索引頁的主體中,我調用了幾個函數。多功能數據庫連接功能
在我的頭包括,我有我的數據庫連接與索引頁面加載。在我的每個函數中,我都沒有調用一個新的數據庫連接,因爲我認爲頭文件中的數據庫連接將在我的函數運行時保持打開狀態。那麼即使數據庫連接在頭文件中打開,當調用一個需要數據庫訪問的函數時,我會收到錯誤消息(數據庫連接失敗)。
因此,我添加了一個數據庫連接到我的每個函數,它工作正常。我的問題是,我打開一個數據庫連接時,通過頁眉加載頁面。然後即時通信打開另一個連接時,每個函數被調用可能是3-5個數據庫連接調用在此頁面上。
這對我來說似乎並不高效。這是正確的方法(在每個函數內部調用一個連接)還是有解決方案/最佳實踐,這樣我就只打開每頁一個數據庫連接,而不管調用的函數的數量是多少?再次,當我從功能本身刪除連接,我得到一個失敗。我的連接功能如下:
function wm_connectToDatabase() {
$dbhost = "xxx";
$dbuser = "xxx";
$dbpass = "xxx";
$dbname = "xxx";
$dbconnection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
if(mysqli_connect_errno()){
die("Connection Failed: ". mysqli_connect_error() ."(". mysqli_connect_errno() .")");
} else {
echo "</br>Connection Success</br>";
}
return $dbconnection;
}
所以我的頭文件在索引加載時調用這個函數。然後,我的每一個功能的再次調用它像這樣:
function fctn1($table){
$db = wm_connectToDatabase();
...function stuff here...
}
function fctn2($table){
$db = wm_connectToDatabase();
...function stuff here...
}
最初,我假定管連接就能滿足所有的功能,只要函數被調用一個網頁,曾在頭的連接上,但我發現這並非如此。我的功能只在im打開每個函數內的另一個連接時才起作用。我不確定爲什麼標題中的初始連接不會保持對我的頁面正文中的函數開放?感謝您的任何幫助。
同樣,當我從函數中刪除數據庫連接時,函數「失敗」,就好像沒有數據庫連接,即使我調用頭中的連接。謝謝。
http://php.net/manual/en/language.variables.scope。PHP – aynber
謝謝!這個頁面幫助我瞭解了很多範圍。 – user982853