#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:
В вашем коде есть несколько ошибок:
- Вы вызываете mysql_fetch_array, но затем используете фигурные скобки, которые предназначены для объектов, но у вас есть массив.
- Вы вызываете base64_decode. Это означает, что вы получите двоичный контент в свой HTML, который не будет работать. Вы должны закодировать его,
base64_encode
если оно хранится в двоичной форме. - Значением
src
of a<img>
должен быть URL, а не само содержимое. В вашем случае вы можете использовать URL-адрес данных.
Комментарии:
1. Я не могу заставить его работать. Я даже получил двоичный код, закодировал его и вставил вручную, а изображение по-прежнему не отображается, и оно находится внутри MySQL.
2. @user2374907 Содержит ли ваша база данных изображения в двоичном виде или они закодированы в base64?
3. Я установил значение столбца изображения в longblob, и когда я нажимаю открыть значение в редакторе, появляется 3 вкладки «Двоичный файл, текст и изображение»