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

时间:2014-09-08 20:14:23

标签: php mysql pdo

我目前正在使用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元素?

我认为逗号将成为关键,但我对如何实现这一点感到困惑。

任何帮助都会很棒。

3 个答案:

答案 0 :(得分:0)

您可以使用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.'">';
}

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

答案 1 :(得分:0)

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>';
}

答案 2 :(得分:0)

另一种方式:

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