为什么这不包括所有文件?

时间:2013-06-30 00:15:27

标签: php mysql

以下代码仅包含第一个文件。总共有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查询。因此,当它包含并执行文件时,它们就会相互重置。

1 个答案:

答案 0 :(得分:0)

看起来很开心。您是否检查了循环中的代码是否重复了两次?

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

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