2012-06-01 5 views
1

Я создал таблицу, где я сохранил изображения через «BLOB». Мне нужно показать эти изображения вместе с другими элементами. Но я не знаю, как показать эти изображения вместе на одной странице. Вот мой php-код, который отображает другие вещи в виде таблицы. Точно так же я хотел отображать изображения соответственно. Любая помощь?Показать изображение из sql

<?php 
       $display_query = mysql_query("SELECT * FROM eportal"); 

        echo "<table id='pageTable'><thead><tr><th>Item code</th><th>Description</th><th>Cost</th></tr></thead>"; 
        echo "<tbody>"; 
        while($row = mysql_fetch_array($display_query)){ 
         print "<tr><td>".$row['itemid']."</td><td>".$row['description']."</td><td>"; 
         print "&#8377;".$row['cost']."</td></tr>"; 
        } 
        echo "</tbody>"; 
        echo "</table>"; 
        mysql_close($connection); 

       ?> 
+3

Savi ng Изображение в базе данных - плохая идея, вы должны хранить только путь изображения в базе данных и хранить изображение на диске, пожалуйста, проверьте мой [ответ] (http: // stackoverflow.com/a/9141116/996493) – Lucifer

+0

Я согласен с Люцифером. Это также означает, что ваши изображения и т. Д. Могут храниться на сервере, отличном от вашего SQL Server. Это освобождает емкость на вашем SQL Server (сеть, процессор, диск, все) для реальной работы SQL, а не выступает в качестве файлового сервера. – MatBailie

+0

Хорошо. Поэтому я должен просто сохранить его на своем диске и сохранить путь в базе данных и использовать «echo»/«print»; отображать изображения один за другим, поскольку он петли. – xan

ответ

0

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

Изображения не передаются в том же HTTP ответах с данными другой страницы.

Для отображения изображений из базы данных вам необходимо реализовать скрипт, который, учитывая идентификатор элемента, будет считывать поле и отправлять двоичные данные изображения; и укажите путь к сценарию в вашей форме <img src="">:

while($row = mysql_fetch_array($display_query)){ 
    print "<tr><td>".$row['itemid']."</td><td>".$row['description']."</td><td>"; 
    print "&#8377;".$row['cost']."</td><td>"; 
    print "<img src=\"image.php?id=".$row['id']."\"></td></tr>"; 

} 

image.php еще один скрипт, который выводит значение image_blob учитывая eportal.id. Вам также необходимо указать правильный размер и тип mime в заголовках.

Лучше всего сохранить изображения в файле (доступном на веб-сервере) и сохранить путь к файлу в базе данных.

+0

Я сделал это, написав: 'echo '';' <включая корневую папку>. Вообще-то, я был новичком. Но как поняли мне понятия о PHP; Я справился с этим. Спасибо. – xan

0

Прочтите данные Blob и запишите их в файл с изображением типа заголовка .. и попробуйте распечатать его, он должен отобразить файл изображения.

И да сохранить изображение или любой файл в БД - это действительно дурная привычка, поскольку вы увеличиваете размер БД и замедляете производительность. Предлагаю вам просто попытаться преобразовать вас в Blob в изображение, но не применять его твоя работа. Просто сохраните изображение в нужном месте и сохраните путь своего местоположения в БД для получения и сохранения в следующий раз.

0

Если вы все еще хотите сохранить свои изображения в базе данных, вам понадобится второй скрипт, который получит эти изображения из базы данных и передаст их в браузер с правильными заголовками.

header("Content-type: image/jpeg"); 
# 
# Replace this with database read: 
# readfile('myimage.jpg'); 

Кроме того, вам необходимо будет сохранить, какое изображение использовать. Там будет другой заголовок для файла JPEG, GIF или PNG.

+0

Это сработало для меня: 'echo '';' <включая корневую папку>. Вообще-то, я был новичком. Знание основных понятий помогло мне справиться с этим. – xan

0

Дискуссия о хранении капли по сравнению с сохранением пути к файлу изображения на диске обсуждалась снова и снова. Microsoft предоставляет исследовательский документ, сравнивающий плюсы и минусы каждого here. С учетом сказанного, чтобы отобразить blob как изображение, вам нужно сделать вызов отдельной страницы и вывести информацию заголовка, которая сообщает браузеру, какой тип изображения хранится.

Например:

connectToDatabase(); 

$sql = "SELECT image_blob FROM eportal;"; 

$result = mysql_query($sql) or die(mysql_error()); 
$row = mysql_fetch_array($result); 

header("Content-type: image/jpeg"); 
echo $row['image_blob']; 
$db->close(); 
1

Сохранение изображений в БД не является хорошей идеей, но если Вы думаете, что Вам нужно это так, то Вы можете получить данные из таблицы БД, закодировать его в base64 (http://php.net/base64_encode), а затем в HTML распечатать его таким образом:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot"> 

Использование PHP Вы бы написать:

echo '<img src="data:'.$image_mime_type.';base64,'.base64_encode($image_data_from_db).'" alt="My image alt" />'; 
+0

Это сработало для меня: 'echo '';' <включая корневую папку>. Вообще-то, я был новичком. Знание основных понятий помогло мне справиться с этим. – xan

+0

Тогда это означает, что у вас есть только имя файла без расширения, сохраненного в БД. Подумайте о сохранении расширения в другом столбце, поскольку пользователи могут загружать также изображения JPEG или GIF, а затем ваш скрипт не будет работать ... Теперь ваше решение полностью отличается от исходного вопроса ... – shadyyx

+0

Нет, я не сохранил никаких столбец «изображение». Я просто запустил ** в цикле ** и назвал мои изображения соответственно. Ты понял? Или мне нужно связать весь код? Разве это не достаточно приличный подход к небольшому сайту? – xan

Смежные вопросы