5

您好,我想在函数中使用 require_once 但不起作用???实际上我的页面中有三个功能我该怎么做....它的工作面但不是内部功能???

请问有人吗???

这是我的代码:

 <?php
    //**************************************
    //     Page load dropdown results     //
    //**************************************
    function getTierOne()
    {
        require_once('../config.php');
        $provincequery="SELECT provinces.ProvinceID, provinces.ProvinceName FROM provinces WHERE ProvinceID > 0";
$result=$coon->query($provincequery); // mysqli neeeds connection while running the query
          while($province = mysql_fetch_array($result)) 
            {
               echo '<option value="'.$province['ProvinceID'].'">'.$province['ProvinceName'].'</option>';
            }

    }
4

2 回答 2

4

实际上,从技术角度来看,您可以require_once()在函数内部使用。但是,这很可能是一个坏主意,而不是您真正想要做的:

  • 在函数中包含代码实际上包括那里的代码。这意味着所有包含的代码都在函数范围内进行评估。PHP 将所有函数声明为全局函数,但变量和纯代码序列绑定在本地,因此在当前执行的函数之外不可见。

  • 由于您使用相对路径来加载包含的文件,因此您只能从某个文件系统级别执行您的函数。这限制了您的代码的使用方式......

虽然当包含的文件包含一些本地配置时,这实际上可能是您想要的,但您几乎肯定会偶然发现:

  • require_once()只需要一次,这就是该功能的用途。这意味着:如果您getTierOne()多次输入您的函数,那么对于随后的每次运行,都不会require_once()包含任何代码,因为它已经在第一次运行中包含。所以你是否得到你的配置取决于!这是一个可怕的设计!

因此,要么在全局范围内包含您的配置,例如将其存储在某个变量中,然后您可以在函数内部引用该变量,或者您使用require()include()确保配置确实包含在函数的每次执行中。

于 2013-05-02T06:05:14.600 回答
0

我首先不建议在函数中使用 require_once 或 require ,虽然可以使用它,但我个人遇到了问题并通过使用 include_once 解决了这个问题,这似乎可以解决错误。

您可能还想研究的另一件事是找到例如 /home/username/public_html/system/core.php 的绝对 pth 可能是文件所在的位置。

所以你会使用这样的东西

include_once("/home/username/public_html/system/core.php"); 

这应该可以解决您遇到的任何问题。

附带说明一下,您永远不应该将配置文件或脚本任何状态所需的任何文件放在函数中,无论您是否使用它,都应该始终调用它。据我所知,它是 mysql 连接文件,所以我总是把它放在最前面。

于 2013-05-02T05:59:09.940 回答