以下代码仅包含第一个文件。总共有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查询。因此,当它包含并执行文件时,它们就会相互重置。
答案 0 :(得分:0)
看起来很开心。您是否检查了循环中的代码是否重复了两次?
可能是包含的第一个文件将$num
的值设置为0.如果发生这种情况,则循环将继续,但不再执行包含模块的代码。无论如何,这个检查是没有必要的。如果查询没有返回行,那么循环条件应该第一次评估为false,因此if
不会添加任何值。
另一个问题可能是文件名名称不匹配。也许有一个拼写错误,或者情况不匹配(Linux文件名区分大小写!)。尝试使用require
代替include
。如果找不到模块,它将失败,因此如果是这种情况,它会为您提供更好的信息。