如何从数据库中显示img



我在DB中保存了多个具有相同VID的图像,我需要帮助在VID == id时根据列VID显示所有图像,这是我的功能,它只显示第一个图像。

<body>

<?php
# database connection file
require_once('conect.php');
# fetching images
$sql1  = "SELECT * FROM villa where id=94; ";
$stmt = $pdo->prepare($sql1);
$stmt->execute();
$images = $stmt->fetchAll();
$num_of_row = $stmt->rowCount();
if ($stmt->rowCount() > 0) { ?>
<div class="gallery">
<h4>All Images</h4>
<?php foreach ($images as $image) {
echo $num_of_row;
for ( $i=0;$stmt->rowCount() >$i;$i++)
{
if ($image['id'] === $image['VID']){
echo $image['id'];
?>
<img src="img/<?php echo ($image['imgV']);>">
<?php }
}
}?>

</div>
<?php } ?>
</body>

也许这个:

<img src="img  . '<?php echo ($image['imgV']);?>' . ">

但是您不应该在模板中使用php代码。Php文件中的Php代码库和单独目录中的模板了解有关mvc的更多信息。(对不起我的英语

首先,我在SQL的末尾添加了order by vid asc, id asc。这将有助于首先对数据集进行排序。

其次,我使用变量$previousId来比较当前行和前一行的VID。

<body>
<?php
# database connection file
require_once('conect.php');
# fetching images
$sql1  = "SELECT * FROM villa where id=94 order by VID asc, id asc;";
$stmt = $pdo->prepare($sql1);
$stmt->execute();
$images = $stmt->fetchAll();
$num_of_row = $stmt->rowCount();
if ($stmt->rowCount() > 0) {
$previousId = null;
?>
<div class="gallery">
<h4>All Images</h4>
<?php
foreach ($images as $image) {
echo $num_of_row;
if($previousId != $image['VID']){
echo $image['id'];
$previousId = $image['VID'];
}
echo '<img src="img/' . $image['imgV'] . '">' . PHP_EOL;
}
?>
</div>
<?php
}
?>
</body>

很抱歉我回答得太离谱了;

我想首先澄清的是$image['imgV']已经有了文件名和扩展名(.jpg,.png(等。如果没有,您需要在代码中添加echo'<img src="img/' . $image['imgV'] . '.jpg" />'扩展名(jpg(。

此外,如果您使用MVC,请确保始终声明您的base_url,这样VIEW中包含的所有图像、样式和脚本都不会将url混淆为目录

最新更新