私が少しクリーンアップしてデータベース関連のphpファイルを独自のフォルダーに移動することを決定するまで、私の小さなプロジェクトではすべてが正常に機能していました。その後、物事は奇妙になりました。
ここで2つの関数を使用しようとしています。
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";
?>
関数の呼び出し順序を切り替えると、getBiggestMonth()は正常に実行され、もう1つは実行されません。また、すべてのファイルが同じフォルダーにある場合、これはすべて正常に機能しました(関数はクラス内の静的関数でしたが、それは問題ではないはずです。同じ問題がここでも発生します)。そのため、どのように可能かわかりません。変数スコープはここでは異なる可能性があり、require_onceは他のことを処理する必要があります。ヘルプ?