一切工作在我的小項目很好,直到我決定清理一點點移動的數據庫相關的PHP文件到自己的文件夾。然後事情變得很奇怪。Require_once似乎不影響所有功能?
我想在這裏使用兩個功能:
function getEntries() {
require_once("mysqliVariables.php");
$mysqli = new mysqli($dbHost, $dbUname, $dbPwd, $dbName);
$sql = "statement...";
$result = $mysqli->query($sql) or die($mysqli->error);
echo $dbHost; // prints host
return $result;
}
function getBiggestMonth() {
require_once("mysqliVariables.php");
$mysqli = new mysqli($dbHost, $dbUname, $dbPwd, $dbName);
echo $dbHost; // prints nothing! why?
$sql = "statement...";
$result = $mysqli->query($sql) or die($mysqli->error); // this line does not run, of course.
return $result;
}
我用另一個函數以不同的文件(文件夾)來調用這些功能,即開始是這樣的:
function listTasks() {
require_once("db/mysqliFunctions.php");
// Get entries using mysqli.
$tasks = getEntries();
echo "<pre>";
var_dump($tasks);
echo "</pre>"; // program works fine this far.
$bm = getBiggestMonth(); // program breaks somehow during this function call.
我變量是一個PHP文件,像這樣:
<?php
$dbHost = "host";
$dbUname = "username";
$dbPwd = "password";
$dbName = "databasename";
>
如果我切換funtion的調用順序,然後getBiggestMonth()運行正常,另一個則不會。此外,所有的這工作罰款時,所有文件均位於同一個文件夾(功能然後在類中的靜態函數,但不應該是一個問題,同樣的問題仍然在這裏),所以我不明白變量作用域在這裏可能有多不同,require_once應該處理其他事情。幫幫我?
但既然已經已要求,不應該有需要再次需要它?我不太瞭解$ dbHost在getBiggestMonth()中沒有被回顯,因爲如果變量不在那裏,它們將是必需的,如果它們是,它什麼也不做。所以它應該總是回聲? – hannu40k 2012-03-01 21:27:40
我試圖在上面更新的答案中進一步解釋它。 – Treffynnon 2012-03-01 21:32:08
啊哈!我現在知道了。這比他們如何將它放在php.net/manual中更容易理解。事實上,它似乎現在工作,謝謝! – hannu40k 2012-03-01 21:37:09