Все отлично работало в моем маленьком проекте, пока я не решил немного почистить и переместил 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
Я попытался объяснить это дальше в моем обновленном ответе выше. – Treffynnon
Aha! Теперь я понимаю. Это было более понятно, чем то, как они помещали его в php.net/manual. И действительно, сейчас это работает, спасибо! – hannu40k