将包含多个图像的一个PDO字符串解析为多个img元素


Parsing one PDO string containing multiple images into multiple img elements

我当前正在使用PDO查询SQL表以回显一些数据。

一切都很顺利,直到我注意到我正在解析的MySQL表包含一个图像列,其中包含7个用逗号分隔的图像。

以下是该列包含的字符串示例:

http://images.autoexposure.co.uk/AETA83919/AETV85190781_1b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_2b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_3b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_4b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_5b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_6b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_7b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_8b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_9b.jpg

我现在用以下代码在前端回显我的结果:

<?php while($row = $results->fetch(PDO::FETCH_ASSOC))
      {
      echo '<div>'.$row["FirstColumn"].'</div>';
} ?>

那么,如何将字符串中的每个图像链接插入到单独的img元素中呢?

我认为逗号将是关键,但我有点困惑如何实现这一点。

任何帮助都会很棒。

您可以使用explode()将字符串拆分为各个图像路径,然后使用foreach():迭代列表

$images = 'http://images.autoexposure.co.uk/AETA83919/AETV85190781_1b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_2b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_3b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_4b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_5b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_6b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_7b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_8b.jpg,http://images.autoexposure.co.uk/AETA83919/AETV85190781_9b.jpg';
foreach(explode(',', $images) as $image) {
  echo '<img src="'.$image.'">';
}

我还考虑使用一对多关系来规范数据库表。

while($row = $results->fetch(PDO::FETCH_ASSOC)) {
    $images = explode(',', $row['FirstColumn']); // Split the string 
    echo '<div>';
    foreach ($images as $image) {
        echo '<img src="'.$image.'"/>'.PHP_EOL;
    }
    echo '</div>';
}

另一种方式:

while($row = $results->fetch(PDO::FETCH_ASSOC))
    echo '<div>' . 
    implode('</div><div>', explode(',', $row["FirstColumn"])) .
    '</div>';
}