2014-11-08 26 views
0

我有一個實例mysqli對象,它是在該root內調用includes一個文件夾,名爲connect.php一個單獨的文件不工作:的mysqli對象 - >查詢在一個特定的PHP文件

$db = new mysqli($host, $user, $password, $dbname); 

if ($db -> connect_errno) { 
    echo $db -> connect_error; 
} 

我的第一個頁面一個require並使用對象$db來執行一個效果很好的real_escape_string任務。我還在includes文件夾中有functions.php。其中有一個叫做sendToDB的函數,它使用query函數。 functions.php也包括require函數。不過,我得到消息:

致命錯誤:調用一個成員函數查詢()一個非對象...

如果我實例化功能sendToDB它成功地寫入到數據庫中的對象。我一拿出來,就會收到同樣的信息。這是一個全球性問題嗎?或者我最好在任何需要它的地方實例化它?另外,如果在多個頁面上使用$db,在每頁上完成後是否安全地運行$db->close();

回答

1

在中使用的數據庫對象(例如sendToDB)的函數的開頭,請確保你有行:

global $db; 

這是爲了使用內部功能全局變量通常遊戲需要。

+0

好東西:-)是一種享受。我不認爲它是'全球',因爲它是'需要'。最好是像我的'functions.php'文件那樣'required'''' required_once'在其他php頁面中。它只是我讀到,PHP不喜歡函數被宣佈不止一次。 – user1574598 2014-11-08 21:18:47

+0

檢查鏈接: http://stackoverflow.com/questions/2418473/when-should-i-use-require-once-vs-include 基本上,只要你有文件中的功能,你應執行require_once。如果它回答了您的問題,請將我的答案標記爲已接受:) – Maxime 2014-11-08 21:22:32

+0

再次感謝 - 是的,我試圖立即標記您的正確,但它告訴我必須等待幾分鐘。 – user1574598 2014-11-08 21:28:43