sql >> Base de Datos >  >> RDS >> Mysql

La imagen de la base de datos MySQL no se imprime

Es porque su navegador no se da cuenta de que los datos que está devolviendo son una imagen. Cuando su servidor web responde a una solicitud, especifica el tipo de contenido que es (de ahí el encabezado de tipo de contenido), y su página se especifica como texto. Esta es la razón por la que se utilizan etiquetas de imagen:le dan la oportunidad de decir "insertar este otro recurso en esta ubicación". Lo que hace tu código es volcar los datos binarios de la imagen como texto en la pantalla, no lo que quieres.

Lo que debe hacer es crear otra página PHP, como getImage.php, que acepte un parámetro $_GET (es decir, una identificación de fila). Esa página luego consultará la base de datos y echo los datos de la imagen, especificando el encabezado Content-Type.

Aquí hay un código de prueba de concepto que escribí sin probar y que no maneja la inyección de SQL ni una serie de otros problemas potenciales.

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'];
}

Ahora, cuando esté creando su HTML en su archivo existente, haría algo como esto:

echo '<td class="sitename2"><img src="./getImage.php?q='.$row["id"].'"/></td>';

Ajuste los nombres de sus columnas SQL en consecuencia.

Saludos.