Вы находитесь на странице: 1из 2

SELECT * FROM Tabla ORDER BY RAND() LIMIT 1

limit 1, determina que unicamente se muestre un registro.

----------------------------------------------

C�mo almacenar una imagen en MySQL (SQL)?

Un amigo me preguntaba por email, c�mo podr�a guardar las im�genes de su p�gina
web dentro de su base de datos mysql.
Aqu� os pongo un trozo de c�digo que puede ayudaros para esta tarea:

- Empezamos por la tabla que contendr� las im�genes:

C�digo:

CREATE TABLE imagenes (


id INT NOT NULL DEFAULT 0 auto_increment,
imagen LONGBLOB,
tipo VARCHAR(255),
PRIMARY KEY (id)
);

el campo "imagen" contendr� la imagen propiamente dicha (los datos binarios) y el


campo "tipo" contendr� el tipo MIME que identifica el formato de la imagen (p. ej.
image/gif).
Por supuesto esta tabla puede ser alterada, modificada, etc. para cubrir vuestras
necesidades espec�ficas.
El tipo de datos BLOB (BLOB, MEDIUMBLOB y LONGBLOB) es el usado por MySQL para
almacenar datos binarios.

A continuaci�n muestro un ejemplo de como almacenar una imagen en esta tabla que
hemos creado:

C�digo:

// Abro el archivo de imagen para cargar sus contenidos


$archivo = 'images/foto01.jpg';

$fp = fopen ($archivo, 'r');


if ($fp){
$datos = fread ($fp, filesize ($archivo)); // cargo la imagen
fclose($fp);

// averiguo su tipo mime


$tipo_mime = 'image/jpeg';
$isize = imagesize ($archivo);
if ($isize)
$tipo_mime = $isize['mime'];

// La guardamos en la BD
$datos = base64_encode ($datos);
$sql = "INSERT INTO imagenes (imagen, tipo) VALUES ('$datos', '$tipo_mime');
$res = mysql_query($sql);
if (!$res)
echo "Error al ejecutar la consulta ($sql)\n";
}
else
echo "Error al abrir el archivo";

Para recuperar la imagen de la base de datos, el proceso que


tendr�amos que seguir depende de cual queramos que sea el
resultado. Imaginemos que lo �nico que queremos es recuperar
la imagen de la base de datos y mostrarla en el navegador:

C�digo:

$id = intval ($_GET['id']); // imaginamos que el par�metro "id" nos llega en la


URL (p. ej. imagen.php?id=5).
$sql = "SELECT imagen, tipo FROM imagenes WHERE id='$id'";
$res = mysql_query ($sql);
if ( $res AND mysql_num_rows($res)>0 ){ // se ha encontrado la imagen
$datos = mysql_fetch_array ($res);

// Indicamos al navegador el tipo de imagen que le vamos a enviar


header ('Content-type: ' . $datos['tipo']);

// Enviamos los datos binarios (la imagen)


echo base64_decode($datos['imagen']);
}
else
echo "Error al ejecutar la consulta ($sql)\n";

Bueno, espero que este c�digo os ayude y ya sabeis, si teneis alguna duda o
problema para ponerlo en pr�ctica, estar� encantado de echaros una mano.

------------------------------------------------------

Вам также может понравиться