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. ------------------------------------------------------