Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Imagem do banco de dados MySQL não imprimindo


É porque seu navegador não percebe que os dados que você está enviando de volta são uma imagem. Quando seu servidor da web responde a uma solicitação, ele especifica o tipo de conteúdo (daí o cabeçalho Content-Type) e sua página está sendo especificada como texto. É por isso que as tags de imagem são usadas:elas dão a você a chance de dizer "incorpore este outro recurso neste local". O que seu código faz é despejar os dados binários da imagem como texto na tela - não o que você deseja.

O que você precisa fazer é criar outra página PHP, como getImage.php, que aceite um parâmetro $_GET (ou seja, um id de linha). Essa página irá então consultar o banco de dados e echo os dados da imagem, especificando o cabeçalho Content-Type.

Aqui está um código de prova de conceito que escrevi sem testar e que não lida com injeção de SQL ou vários outros problemas potenciais.
header('Content-Type: image/png'); //change to the proper content type for your type of image

$imageID = mysql_real_escape_string($_GET['q']);

$result = mysql_query(sprintf('SELECT file_data FROM images2 WHERE id="%s" AND file_data IS NOT NULL LIMIT 1', $_GET['q']));

if(mysql_num_rows($result) !== 1)
{
  //a row wasn't found, so 404
  header('HTTP/1.0 404 File Not Found');
}
else
{
  $row = mysql_fetch_object($result);
  echo $row['file_data'];
}

Agora, quando você está construindo seu HTML em seu arquivo existente, você faria algo assim:
echo '<td class="sitename2"><img src="./getImage.php?q='.$row["id"].'"/></td>';

Ajustando seus nomes de coluna SQL de acordo.

Felicidades.