Puede caber la nececidad de querer guardar imagenes dentro de un campo BLOB de base de datos. Las razones para querer esto dependen de un monton de factores que no vamos a discutir aquí.
Como guardar la imagen:
Código PHP:
mysql_connect($host, $user, $pw)or die("cannot connect");
mysql_select_db($db) or die("Query failed". mysql_error());
$nombre_archivo = "directorio/imagen.jpg";
$gestor = fopen($nombre_archivo, "rb"); //abro el archivo que quiero insertar
$contenido = fread($gestor, filesize($nombre_archivo)); //leo el contenido del mismo y luego lo cierro.
fclose($gestor);
$sql="insert into mitabla (imagen) values ('".base64_encode($contenido)."')"; //genero la instancia SQL y luego la ejecuto.
$result1=mysql_query($sql);
Puntualmente yo paso a base64 (base64_encode) a la imagen para poder manipularla como texto y no como archivo binario.
El archivo no puede ser mostrado directamente por lo que lo deberemos llamar asi:
Código PHP:
echo "<img src='mostrar.php' />";
Y el archivo mostrar.php será el siguiente:
Código PHP:
mysql_connect($host, $user, $pw)or die("cannot connect");
mysql_select_db($db) or die("Query failed". mysql_error());
$sql="select imagen from mitabla";
$result1=mysql_query($sql);
$valores = mysql_fetch_assoc($result1);
$imagen=base64_decode($valores['imagen']); //recupero la imagen en base64 y la decodeo
header('Content-Type: image/jpeg'); //le indico al php que es lo que voy a mostrar (en este caso para una imagen jpg)
print($imagen);