图像无法从mysql数据库正确显示

时间:2017-12-04 08:03:30

标签: php mysql database

我正在尝试使用mysql数据库和php在表格中显示图像。我的表中的其他所有信息都显示正常,但图像除外,我收到了。

����JFIF���(%!1!1)...... 383,7 * - 。7 +%& ----- 5 --- + ------- !-5 ----- + ------------------- 5 - / ---"乙1A&#34 ; QA2

在我的表格中,这种情况持续了一段时间。在我的数据库中,我将图像设置为blob而不是null。我正在使用此代码来显示它。

 <?php 
          include 'connect.php';
          $results = mysqli_query($con, 'select * from products');    
          ?>
            <table cellpadding="3" cellspacing ="3" border="0">
                <tr>
                    <th>Image</th>
                    <th>Name</th>
                    <th>Description</th>
                    <th>Price</th>
                    <th>Buy Product</th>
                </tr>
                <?php

                 while($products= mysqli_fetch_object($results)){
                     if($products->id<=10){?>
                <tr>
                    <td><?php echo $products->images;?></td>
                    <td><?php echo $products->name;?></td>
                    <td><?php echo $products->description;?></td>
                    <td><?php echo $products->price;?></td>
                    <td><a href="cart.php?id=<?php echo $products->id; ?
 >">Add to Cart</a></td>
                </tr>
                 <?php }} ?>    
            </table>  

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

首先我要说的是,将图像数据存储在数据库中可能是一个坏主意,尤其是当您拥有大量图像时。稍微好一点的方法可能是只存储文件的路径并在html代码中链接到它。

无论如何,你有问题并且有解决方案。目前您只是显示BLOB内容,这是图像的原始二进制数据。要显示图片,您需要一个包含正确来源的<img>标记。

这样的事情:

<img src="data:image/jpeg;base64,<?= base64_encode($blob) ?>"/>;

在您的确切情况下,它看起来更像是这样:

...
<td>
   <!-- JPG image -->
   <img src="data:image/jpeg;base64,<?= base64_encode($products->images) ?>"/>;
</td>
...

答案 1 :(得分:0)

将图像存储在数据库中通常被认为是一个坏主意,您应该尝试存储图像路径。

如果你真的需要这样做,你需要使用正确的标签来显示它们:

# If you readd this line, you must change the SO value
LDFLAGS += -brtl

例如,请重新考虑。