На самом деле, лучший подход - это иметь PHP-скрипт для вывода двоичного файла изображения с правильными заголовками (скажем, getimage.php), а скрипт, используемый для генерации HTML, будет иметь такой код:
$get_pics = mysql_query("SELECT id FROM images WHERE user='$userid' ");
while($imglist = mysql_fetch_array($get_pics))
{
$new .= '<img src="getimage.php?id='.$imglist['id'].'" title="'.$imglist['caption'].'" />';
}
Таким образом, HTML будет выглядеть следующим образом:
<img src="getimage.php?id=12345" title="the caption of" />
У вас должен быть первичный ключ (а почему бы и нет?) В таблице images
, скажем, id
.
Сценарий " getimage.php " должен извлечь двоичный файл и вывести содержимое (при условии, что поле img_location
содержит фактическое содержимое изображения:
<?php
// this will output the RAW content of an image with proper headers
$id=(int)$_GET['id'];
$get_img = @mysql_fetch_assoc(@mysql_query("SELECT img_location FROM images WHERE id='$id' "));
$image = imagecreatefromstring(base64_decode($get_img['img_location']));
if ($image){
//you may apply here any transformations on the $image resource
header("Content-Type: image/jpeg"); //OR gif, png, whatever
imagejpeg($image,null,75); //OR imagegif, imagepng, whatever, see PHP doc.
imagedestroy($image); //dump the resource from memory
}
exit();
@mysql_close();
?>
Этот подход будетпредоставьте вам гибкость. Однако вам может потребоваться проверить и санировать переменные и выбрать другой метод подключения к MySQL, например MYSQLi или PDO. Еще одна хорошая идея - это использование подготовленных операторов для предотвращения SQL-инъекций.