5

こんにちは、関数内で require_once を使用したいのですが、機能しませんか??? 実際、私のページには 3 つの関数があります。どうすればそれを行うことができますか?

どなたかお願いします????

ここに私のコードがあります:

 <?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 に答える