2011-10-17 35 views
22

Creé una base de datos MySQL con una tabla usando phpmyadmin. Creé esta tabla con una columna BLOB para contener un archivo jpeg.Cómo recuperar imágenes de la base de datos MySQL y mostrarlas en una etiqueta html

Tengo problemas con respecto a la variable php $result aquí.

Mi código hasta ahora: (catalog.php):

<body> 
<?php 
    $link = mysql_connect("localhost", "root", ""); 
    mysql_select_db("dvddb"); 
    $sql = "SELECT dvdimage FROM dvd WHERE id=1"; 
    $result = mysql_query("$sql"); 
    mysql_close($link); 

?> 
<img src="" width="175" height="200" /> 
</body> 

¿Cómo puedo obtener el resultado $ variable a partir de PHP en el código HTML para que pueda visualizarlo en la etiqueta <img>?

+1

_Whaaaat_ ¿Problemas? Necesitas decir qué está haciendo mal tu código en este momento. – Bojangles

+1

Puede comenzar obteniendo esos resultados –

+0

No estoy seguro de la sintaxis involucrada para mostrar la imagen BLOB – exxcellent

Respuesta

33

No se puede. Necesita crear otra secuencia de comandos php para devolver los datos de la imagen, p. getImage.php. Cambio catalog.php a:

<body> 
<img src="getImage.php?id=1" width="175" height="200" /> 
</body> 

Entonces getImage.php es

<?php 

    $id = $_GET['id']; 
    // do some validation here to ensure id is safe 

    $link = mysql_connect("localhost", "root", ""); 
    mysql_select_db("dvddb"); 
    $sql = "SELECT dvdimage FROM dvd WHERE id=$id"; 
    $result = mysql_query("$sql"); 
    $row = mysql_fetch_assoc($result); 
    mysql_close($link); 

    header("Content-type: image/jpeg"); 
    echo $row['dvdimage']; 
?> 
+0

le dijo @ daiscog. Está funcionando bien. Muchísimas gracias –

+0

, pero la cosa es que tengo casi 50 imágenes en mi db. Ha escrito para obtener una sola imagen.¿Cómo puedo mostrar imágenes completas en la página –

+2

? Para obtener una imagen diferente de la base de datos simplemente cambie el parámetro 'id' get:' ... ' – megaflop

2

Necesita recuperar y diseccionar la información en lo que necesita.

while($row = mysql_fetch_array($result)) { 
echo "img src='",$row['filename'],"' width='175' height='200' />"; 
} 
1

En primer lugar, debe obtener la fila resultante del conjunto de resultados de la consulta. Para eso puede usar mysql_fetch_row. Ahora que tiene la fila recuperada, puede acceder al valor recuperado y repetirlo en el src.

Por ejemplo:

$sql = "SELECT dvdimage FROM dvd WHERE id=1"; 
$result = mysql_query($sql); 
$row = mysql_fetch_row($result); 
?> 
<img src="<?=$row[0]?>" width="175" height="200" /> 
<? 
+1

No puede poner datos de imágenes sin formato dentro de una img src. OP indica claramente que la base de datos almacena los datos de imagen, no una ruta al archivo de imagen. Además, el uso de ' megaflop

+0

@daiscog Lo sé, leí mal la pregunta, pero dado que se aceptó la respuesta correcta y mi código explicaba el flujo de cómo hacerlo recuperar datos de mysql lo dejo estar aquí. – Marcus

1

añadir $row = mysql_fetch_object($result); después de su mysql_query();

su html <img src="<?php echo $row->dvdimage; ?>" width="175" height="200" />

+0

No puede poner datos de imágenes sin formato dentro de un img src. OP indica claramente que la base de datos almacena los datos de imagen, no una ruta al archivo de imagen. – megaflop

+0

gracias, estaba pensando que está accediendo al camino. – punit

21

Técnicamente, se puede datos de imagen puesto también en una etiqueta img, utilizando data URIs.

<img src="data:image/jpeg;base64,<?php echo base64_encode($image_data); ?>" /> 

hay algunas circunstancias especiales en las que esto podría incluso ser útiles, aunque en la mayoría de los casos es mejor servir a la imagen a través de una secuencia de comandos independiente like daiscog suggests.

+0

Me preguntaba si alguien sugeriría un URI de datos. No es muy eficiente, IMO (sin almacenamiento en caché del navegador/proxy), pero sin duda merece una nota. – megaflop

Cuestiones relacionadas