Не удается загрузить изображение из базы данных MySQL с помощью PHP

#php #mysql #image

#php #mysql #изображение

Вопрос:

Я создаю список статей внутри раздела, но у меня возникают проблемы с получением изображений из моей базы данных 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>";
    }
?>
  

Комментарии:

1. Почему вы используете фигурные скобки, если используете mysql_fetch_array ?

2. Заменить mysql_fetch_array на mysql_fetch_object .

Ответ №1:

замените ваш источник изображения на

‘данные: изображение / gif; base64,’.base64_decode($row {‘Image’});

также используйте правильный mime вместо gif

Комментарии:

1. это будет работать, только если $row{‘Image’} состоит из строки файла, в противном случае используйте URL-адрес на основе пути

2. Я не могу заставить его работать, не могли бы вы отредактировать мой код, чтобы я мог точно видеть, что вы исправляете.

Ответ №2:

В вашем коде есть несколько ошибок:

  1. Вы вызываете mysql_fetch_array, но затем используете фигурные скобки, которые предназначены для объектов, но у вас есть массив.
  2. Вы вызываете base64_decode. Это означает, что вы получите двоичный контент в свой HTML, который не будет работать. Вы должны закодировать его, base64_encode если оно хранится в двоичной форме.
  3. Значением src of a <img> должен быть URL, а не само содержимое. В вашем случае вы можете использовать URL-адрес данных.

Комментарии:

1. Я не могу заставить его работать. Я даже получил двоичный код, закодировал его и вставил вручную, а изображение по-прежнему не отображается, и оно находится внутри MySQL.

2. @user2374907 Содержит ли ваша база данных изображения в двоичном виде или они закодированы в base64?

3. Я установил значение столбца изображения в longblob, и когда я нажимаю открыть значение в редакторе, появляется 3 вкладки «Двоичный файл, текст и изображение»