随机图像生成器-警告:getimagesize(images/):打开流失败:没有这样的文件或目录


random image generator-Warning: getimagesize(images/): failed to open stream: No such file or directory in

我的图像生成器包括

  1. 使用select语句从数据库的图像表中提取的图像名称数组
  2. 随机数生成器,
  3. 和为所选文件构建正确路径名的字符串。

选择要显示的图像之一,我生成一个介于1和的长度之间的随机数数组。

虽然生成器正常工作,但我注意到其中一个随机数抛出了这个错误:

警告:getimagesize(images/): failed to open stream:

对数组的检查显示了2个数组元素(代表我的图像数量),但其中一个数组元素为NULL(横幅表中的第一个条目

)

图像生成器脚本

    require_once('connection.inc.php');
    $sql = 'SELECT `filename` FROM  banner';
    $result = $mysqli->query($sql, MYSQLI_STORE_RESULT) or die(mysqli_error());
    $row = $result->fetch_array(MYSQLI_ASSOC);//an array of image names
    $count = $result->num_rows;
    for ($i = 1; $i <= $count; ++$i) 
    {
       $row[$i] = $result->fetch_array(MYSQLI_ASSOC);
    }
    $i = rand(1, $count); //a random number generator,
       //The random number is used in the final line to build the correct pathname for the selected file.
       $selectedImage = "images/{$row[$i]['filename']}"; 
      if (file_exists($selectedImage) && is_readable($selectedImage)) 
      {
        $imageSize = getimagesize($selectedImage);
      }

var_dump(行)

    array (size=1)
    'filename' => string 'ginsomin2.jpg' (length=13)
    null

随机图像显示

   <div id="banner" class="wrapper clearfix">
      <img src="<?php echo $selectedImage; ?>" alt="banner">
   </div>

你知道我该怎么做吗?

谢谢。

我使用ORDER BY RAND()来选择一个随机文件名。这与LIMIT相结合,对于从一组行中选择随机样本很有用。list()函数用于从图像表的结果行集合中分配一个随机值(图像文件名)给变量($bannerImage)。

   $sql = 'SELECT `filename` FROM  banner ORDER BY RAND() LIMIT 1';
   $result = $mysqli->query($sql) or die(mysqli_error());
   $ok =$result->fetch_row();
   list($chosenFilename) = $ok;
   $bannerImage = "images/$chosenFilename"; 
   if (file_exists($selectedImage) && is_readable($selectedImage)) 
    {
       $imageSize = getimagesize($selectedImage);
    }

因此使用的$bannerImage

    <div id="banner">
       <img src="<?php echo $bannerImage ; ?>" alt="banner">
    </div> 

输出所需的结果。