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

看起来还可以。您是否检查过循环中的代码是否被迭代了两次?

可能是包含的第一个文件将值设置$num为 0。如果发生这种情况,则循环将继续,但不再执行包含模块的代码。无论如何,这个检查是没有必要的。如果查询不返回行,则循环条件第一次应该评估为 false,因此if不会添加任何值。

另一个问题可能是文件名名称不匹配。可能有错字,或者大小写不匹配(Linux 文件名区分大小写!)。尝试使用require而不是include. 如果找不到模块,它将失败,因此如果是这种情况,它会为您提供更好的信息。

于 2013-06-30T00:18:45.337 回答