0

我第一次做 PHP 并对此进行研究,但并不快乐。基本上,我正在尝试从我的 PHPMyAdmin 数据库中获取图像并将其上传到我创建的网页。除图像外,所有标题和文本都按预期显示。

我从数据库中获取图像的代码

    <?php
        include 'config.php';
        include 'opendb.php';
        $getdestinationdetails = mysql_query("SELECT *
        FROM tbldestinations
        WHERE destinationid = $_GET[destinationid]");
        while($row = mysql_fetch_array($getdestinationdetails))
        {
        echo "<h1>Visit " . $row['destinationname'] . "</h1>".
        "<imgsrc = 'images" . $row['destinationimage'] . "' />"  .
        "<br />
        <br />" .
        $row['destionationdesc'] .
        "<br />
        <br />
        Our holidays include:
        <ul>
            <li>Luxury coach travel from Shipley Town Centre</li>
            <li>Bed and Breakfast at a top hotel</li>
            <li>Free tea and coffee on board your coach</li>
            <li>The services of an experienced courier</li>
            <li>Free complimentary glass of champagne upon arrival at your hotel</li>
        </ul>
        <center><h2>Don't delay, book today!</h2></center>";
        }
        include 'closedb.php';
?>

我尝试了所有的实验,但都是徒劳的。任何提示或建议将不胜感激。提前致谢

4

1 回答 1

2

如果实际图像存储在数据库中,您有两种选择:

  1. 制作另一个旨在仅从数据库加载图像的脚本。在此脚本中,您将设置header('Content-Type: image/jpeg')(或您将显示的任何图像类型。然后,您将输出内容。此选项可能不是首选,因为它需要额外调用数据库(http:/ /stackoverflow.com/questions/5525830/displaying-an-image-stored-in-a-mysql-blob)
  2. 风险更大一点,为了浏览器的兼容性,就是对它进行base64编码,然后直接输出到图像标签中。(http://stackoverflow.com/questions/1207190/embedding-base64-images)

无论哪种选择,您都需要<img />在主页上保留一个标签。选项 1 需要一个src指向脚本的属性,包括在数据库中查找图像所需的任何标识符(但要非常小心 XSS)。选项 2 直接将其输出到图像标签中,因此在某些方面也更可取

如果它只是一个图像的链接:

您的上述代码应该可以正常工作,除非进行了以下修改:

echo "<h1>Visit " . $row['destinationname'] . "</h1>".
     "<img src=\"images/" . $row['destinationimage'] . "\" />"  .
...

编辑:

我会做什么,这将是最简单的:在您的 php 文件中,输出您的图像(假设它是 jpg),如下所示:

...
echo '<img src="data:image/jpeg;base64,' . base64_encode($row['destinationimage']) . '" />';
...

以上实际上将图像放入图像标签本身,而不是通过互联网下载。我认为这里的挂断是您在 PHPmyAdmin 中看到图像的事实。当您在那里看到图像时,确实无法将其从 PHPmyAdmin 中取出。我自己没有尝试过,但我会假设他们正在做与我在上面展示的类似的事情——只是在 HTML 标记中显示图像。

于 2013-01-03T02:57:28.113 回答