PHP 在 MySQLi while 循环中使用 glob()

PHP use glob() inside MySQLi while loop

在我网站的仪表板上,我使用 while 循环从数据库中检索数据并回显每条记录。在这个 while 循环中,我使用 glob() 显示特定文件夹内的所有图像,这是我的数据库中的一列 table、$record["folder"].

这是我使用的代码:

while($record = mysqli_fetch_array($result))

   {

            $directory = '../send-us-your-photos/media/'.$record['folder'];
            chdir($directory);
            $images = glob("*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE);
            foreach($images as $image) {
                echo '<div class="col-sm-4">
                        <img src="'.$directory.'/'.$image.'" />
                        <div>'.$image.'</div>                              
                      </div>'; 
            } 

   }

现在,第一条记录工作正常,显示特定文件夹中的图像。但是接下来的记录都显示相同的 $image 数据,但针对不同的文件夹。

例如:

记录 1:文件夹 1 - 显示 image1.jpg

记录 2:文件夹 2 - 尝试在文件夹 2

中找到相同的 image1.jpg

记录 3:文件夹 3 - 尝试在文件夹 3

中找到相同的 image1.jpg

我需要的:

记录 1:文件夹 1 - 显示文件夹 1 中的图像

记录 2:文件夹 2 - 显示文件夹 2 中的图像

记录 3:文件夹 3 - 显示文件夹 3 中的图像


我应该如何更改我的代码才能在每条记录中显示正确的图像?

我认为这取决于您的 chdir 声明。您将向下移动一个文件夹 ..,然后向上移动到 send-us-your-photos/media/_FOLDER_

所以下次您从 send-us-your-photos/media/_FOLDER_ 开始并返回一个文件夹 ..send-us-your-photos/media/ 然后它尝试转到 send-us-your-photos/media/send-us-your-photos/media/_FOLDER_ 并且显然失败了。

它看起来不像失败,因为你正在输出你自己设置的 $directory 的值。尝试输出 getcwd()

简单地说,不要更改目录,直接在 glob 函数中使用目录路径

while($record = mysqli_fetch_array($result))
{
    $directory = '../send-us-your-photos/media/'.$record['folder'];
    // chdir($directory);
    $images = glob($directory . "/*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE);
    foreach($images as $image) {
        echo '<div class="col-sm-4">
        <img src="'.$directory.'/'.$image.'" />
        <div>'.$image.'</div>                              
        </div>'; 
    } 
}