【问题标题】:how can display img from DB如何显示数据库中的图像
【发布时间】:2022-01-26 17:52:18
【问题描述】:

我在数据库中保存了多个具有相同 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>

【问题讨论】:

  • 什么是$image['id']?这里的代码比需要的要多得多,并且对于您想要实现的目标可能效率低下......但不清楚那到底是什么。 for ( $i=0;$stmt-&gt;rowCount() &gt;$i;$i++)foreach ($images as $image)不一样吗?
  • @$image['id'] id 是我的数据库中的 Colum,我认为它是相同的,但是 foreach 它不起作用,我只是尝试使用 foreach。跨度>
  • 我在数据库中保存了多个具有相同 VID 的图像,当 VID == id 时,我需要帮助根据列 VID 显示所有图像,这是我的功能,它只显示第一张图像。其中 VID 和 id 是 DB 中的列
  • 请提供存储在数据库中的数据的样本值。这是一个base64的图像字符串,还是只是一个图像文件名/ URL?
  • 请提供样本数据。否则我们将无法给出准确的答案

标签: php database image pdo echo


【解决方案1】:

对不起,我回答得太离谱了;

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

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

【讨论】:

    【解决方案2】:

    首先,我在您的 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>
    

    【讨论】:

      【解决方案3】:

      也许是这样的:

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

      但是你不应该在你的模板中使用 php 代码。 php 代码库在 .php 文件和模板中的单独目录中 了解更多关于 mvc..) 对不起我的英语))))

      【讨论】:

      • 我的代码在 PHP 文件中,'img/' 代表我尝试你的代码它不起作用的文件夹。
      • if ($image['id'] === $image['VID']){ echo $image['id']; echo '';
      • 我在数据库中保存了多个具有相同 VID 的图像,当 VID == id 时,我需要帮助根据列 VID 显示所有图像,这是我的功能,它只显示第一张图像。其中 VID 和 id 是 DB 中的列
      猜你喜欢
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      相关资源
      最近更新 更多