조금만 정리하고 데이터베이스 관련 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
아하! 지금은 이해. 그것은 그들이 php.net/manual에 넣는 것보다 더 이해할 수있었습니다. 그리고 실제로 그것은 지금 일하는 것 같습니다, 감사합니다! – hannu40k