0

以下のコードには、最初のファイルのみが含まれています。合計で 2 つのファイルが現在購入されており、将来的にはさらに増える予定です。すべてのファイルを含めるようにコーディングするにはどうすればよいですか?

コードは機能しますが、1 つのファイルしか含まれていないため、意図したとおりに機能しません。

$result = $this->db->query("SELECT directory FROM modules WHERE enabled = {es} ORDER BY id ASC", 'yes');
$num = $result->numberOfRows;

while($row = $result->getArray())
{
  if($num != 0)
  { 
    if(file_exists($this->root . '/modules/' . $row['directory']))
    {
      include($this->root . '/modules/' . $row['directory'] . '/' . $row['directory'] . '.php');
    }
    else
    {
      $this->db->query("DELETE FROM modules WHERE directory = {es}", $row['directory']);
    }
  }
}

編集:問題が見つかりました。私が含めていたファイルには、同じ変数「$result」と「$row」を使用した SQL クエリが含まれています。そのため、ファイルを含めて実行すると、互いにリセットされていました。

4

1 に答える 1

0

よさそうです。ループ内のコードが 2 回反復されているかどうかを確認しましたか?

インクルードされた最初のファイルが の値$numを 0 に設定している可能性があります。その場合、ループは続行されますが、モジュールを含むコードは実行されなくなります。とにかく、このチェックは必要ありません。クエリが行を返さない場合、ループ条件は最初の時点で既に false と評価される必要があるため、ifは値を追加しません。

別の問題として、ファイル名の名前が一致しない可能性があります。タイプミスがあるか、大文字と小文字が一致していない可能性があります (Linux のファイル名では大文字と小文字が区別されます!)。requireの代わりに使用してみてくださいinclude。モジュールが見つからない場合は失敗するため、その場合はより良い情報が得られます。

于 2013-06-30T00:18:45.337 に答える