0

次のエラーメッセージが表示されます。

   [Wed Sep 21 21:19:46 2011] [error] [client 127.0.0.1] PHP Fatal error:  Cannot redeclare db_get_groups() 
(previously declared in /Library/WebServer/Documents/SMICAdmin/databasescripts/db_get_groups.php:4) 
in /Library/WebServer/Documents/SMICAdmin/databasescripts/db_get_groups.php on line 24, 
referer: http://localhost/SMICAdmin/index.php

ご覧のとおり、エラーメッセージは、同じスクリプト内で同じ関数db_get_groups()が2回発生することを示しています。しかし、そうではありません。ファイル全体がここに含まれています(db_get_groups.php):

<?php

    function db_get_groups($dbconnection){  //Line 4

        $query = "SELECT id FROM groups";
        $result = mysqli_query($dbconnection, $query);

        $rows = mysqli_fetch_all($result, MYSQLI_ASSOC);
        $grouplist = Array();

        foreach ($rows as $key => $value) {
            error_log(" Value -> ".$value['id']);
            $grouplist[] = $value['id'];

        }

    return $grouplist;
    } //Line 24
    ?>

プロジェクト全体で「db_get_groups」を検索すると、以下の宣言しか見つかりません。ファイルは、使用するために他の2つのファイルに含まれています。

なんらかの方法でファイルのインポートを複数回行ったかどうかを調べようとしましたが、見つかりませんでした。

問題は何ですか?どうすれば修正できますか?これは本当に配線されているように感じます...

4

3 に答える 3

1

使用:require_once( "db_get_groups.php");

または、include_once( "db_get_groups.php");

単に要求または含めるのではなく。

于 2011-09-21T19:39:01.607 に答える
1

肝心なのは、エラーメッセージが表示される唯一の方法は、関数が2回定義されている場合です。これが発生する可能性のある一般的な方法は2つあります。これらの両方を再確認する必要があります。

  1. 別のファイルが関数を宣言していますdb_get_groups
  2. db_get_groups.php複数回含まれています。/の代わりにinclude_once/を使用することを検討してください。require_onceincluderequire
于 2011-09-21T19:40:56.537 に答える
1

その定義を削除し、db_get_groups() を呼び出して、エラー ログにヒントがあるかどうかを確認してください。

それでもうまくいかない場合は、おそらくファイルを複数回含めていますか? どこかにそれを含む他のファイルの両方を含めていますか?

require/include または require_once/include_once を使用しましたか? *_once を試してください。

そのファイルへのシンボリック リンクはありますか? もしそうなら、それらも含めていただけますか?

最後に、関数の外側 (関数の前) に log() または echo() を追加すると役立つ場合があります。

于 2011-09-21T19:45:00.583 に答える