PHP包含循环内的不同文件

时间:2017-10-26 18:49:18

标签: php database mysqli include

我的网站分为几个部分(新闻,关于,联系..等等),我试图将它们包含在循环中。 从数据库中选择部分名称和每个部分的编号。 它需要用PHP来完成,因为部分可能会不时地(以及部分的数量)不同,所以动态代码是唯一的方法。

问题是我的代码只包含第一部分而其他部分则消失了。

这是我的PHP代码:

include 'includes/dbh.inc.php';                                   
$sql = "SELECT section_name FROM sections WHERE visiblity!='hidden' ORDER BY section_number";
$result = mysqli_query($conn, $sql);  

while ($row = mysqli_fetch_assoc($result)) {
    include ('sections/' . $row['section_name'] . '.php');            
}

我经常使用这段代码而且它一直都有用。我包含问题?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

由于您没有描述您遇到的错误,我将假设您收到“丢失文件”警告,然后依赖该文件的代码出现错误。

使用file_exists

检查包含路径
while ($row = mysqli_fetch_assoc($result)) {
    $path = 'sections/' . $row['section_name'] . '.php';

    if (file_exists($path)) {
        include ($path);
    } else {
        // throw exception, or log it, or something
        throw new Exception("Required file not found: $path");
    }
}

也许考虑让你的应用程序了解已经加载的内容

$loaded = [];
while ($row = mysqli_fetch_assoc($result)) {
    $path = 'sections/' . $row['section_name'] . '.php';

    if (file_exists($path)) {
        $loaded[] = $row['section_name'];
        include ($path);
    }
}

...

if (in_array('some_section', $loaded)) {
    // build the section
}

注意:根据您实际尝试完成的内容,有很多更好的方法可以做到这一点。我高度建议重新考虑这种文件/内容/包含管理方法。