如何从PHPMyAdmin获取图像并加载到网页中

时间:2013-01-03 02:48:33

标签: php phpmyadmin

我第一次做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';
?>

我尝试了所有的实验但都徒劳无功。任何提示或建议将非常感激。提前致谢

1 个答案:

答案 0 :(得分: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)
  3. 任何一个选项,您都需要在主页上添加<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标签中显示图像。