无法使用PHP从MySQL数据库加载图像

时间:2014-06-21 12:31:57

标签: php mysql image

我在一个部分中创建了一个文章列表,但是我在从MySQL数据库中获取图像时遇到了麻烦。我按照本指南如何在MySQL http://forums.mysql.com/read.php?20,17671,27914中存储图像。这是我正在使用的代码。

<?php
    $result = mysql_query("SELECT * FROM heroes");
    while ($row = mysql_fetch_array($result)) {
    echo "<article>";
    if($row{'Type'} == 'Strength') {
        echo "<span class='strength'></span>";
    } elseif ($row{'Type'} == 'Agility') {
        echo "<span class='agility'></span>";
    } else {
        echo "<span class='intelligence'></span>";
    }
    echo "<div>";
    echo "<header>"."<h2>"."<a href='javascript:;'>".$row{'Name'}."</a>"."</h2>"."</header>";

    if($row{'Image'} != NULL) {
        ?>
        <img src="<?php base64_decode($row{'Image'}); ?>" alt="hero-image" width="200" height="300" />
        <?php
    } else {
        echo '<img src="images/no-image.png" alt="hero-image" width="200" height="300" />';
    }
    echo "</div>";
    echo "</article>";
    }
?>

2 个答案:

答案 0 :(得分:0)

替换你的图像源

'数据:图像/ GIF; BASE64,' BASE64_DECODE($行{ '图像'});。

也使用适当的mime而不是 gif

答案 1 :(得分:0)

您的代码存在一些问题:

  1. 你调用mysql_fetch_array但是后来使用了用于对象的花括号,但你有一个数组。
  2. 您调用base64_decode。这意味着您将在您的HTML中获得二进制内容,但这些内容无法正常工作。如果它以二进制形式存储,则必须使用base64_encode对其进行编码。
  3. src的{​​{1}}的值必须是网址,而不是内容本身。在您的情况下,您可以使用Data-URL