Código de PHP - Guardar y mostrar una imagen de una base de datos MySQL

Imágen de perfil

Guardar y mostrar una imagen de una base de datos MySQLgráfica de visualizaciones


PHP

Actualizado el 2 de Diciembre del 2014 por Administrador (718 códigos) (Publicado el 11 de Febrero del 2002)
457.344 visualizaciones desde el 11 de Febrero del 2002
Código para guardar y mostrar una imagen desde PHP en una base de datos MySQL. (Actualizado a PHP5).

Se han desarrollado tres versiones que hacen lo mismo utilizando diferentes conectores de MySQL:
mysql_
mysqli_
mysqli orientado a objetos

Requerimientos

Para poder utilizar este código, necesitáis disponer de una base de datos denominada 'imagen', con una tabla denominada 'imagephp'.
Se precisan dos archivos que se muestra en el código: imagen_agregar.php y imagen_mostrar.php

Versión 1 - mysql_
estrellaestrellaestrellaestrellaestrella(52)

Actualizado el 2 de Diciembre del 2014 (Publicado el 11 de Febrero del 2002)gráfica de visualizaciones de la versión: Versión 1 - mysql_
145.068 visualizaciones desde el 11 de Febrero del 2002

Version 2 - mysqli_
estrellaestrellaestrellaestrellaestrella(3)

Publicado el 2 de Diciembre del 2014gráfica de visualizaciones de la versión: Version 2 - mysqli_
10.833 visualizaciones desde el 2 de Diciembre del 2014
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Esta nueva versión utiliza mysqli_ en vez de mysql_ ya que esta esta deprecated
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
########## imagen_agregar.php ##########
# http://www.lawebdelprogramador.com
 
/*
La base de datos utilizada para el ejemplo se llama imagenes

CREATE TABLE IF NOT EXISTS `imagephp` (
  `id` smallint(6) NOT NULL auto_increment,
  `anchura` smallint(6) NOT NULL,
  `altura` smallint(6) NOT NULL,
  `tipo` char(15) NOT NULL,
  `imagen` mediumblob NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM;
*/
?>
<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <style>
    .error {font-weight: bold; color:red;}
    .mensaje {color:#030;}
    .listadoImagenes img {float:left;border:1px solid #ccc; padding:2px;margin:2px;}
    </style>
</head>
 
<body>
 
<?php
# Conectamos con MySQL
$link=mysqli_connect("localhost","root","123456","imagen");
if (mysqli_connect_errno()) {
    die("Error al conectar: ".mysqli_connect_error());
}
 
// Los posible valores que puedes obtener de la imagen son:
//echo "<BR>".$_FILES["userfile"]["name"];      //nombre del archivo
//echo "<BR>".$_FILES["userfile"]["type"];      //tipo
//echo "<BR>".$_FILES["userfile"]["tmp_name"];  //nombre del archivo de la imagen temporal
//echo "<BR>".$_FILES["userfile"]["size"];      //tamaño
 
# Comprovamos que se haya subido un fichero
if (is_uploaded_file($_FILES["userfile"]["tmp_name"]))
{
    # verificamos el formato de la imagen
    if ($_FILES["userfile"]["type"]=="image/jpeg" || $_FILES["userfile"]["type"]=="image/pjpeg" || $_FILES["userfile"]["type"]=="image/gif" || $_FILES["userfile"]["type"]=="image/bmp" || $_FILES["userfile"]["type"]=="image/png")
    {
        # Cogemos la anchura y altura de la imagen
        $info=getimagesize($_FILES["userfile"]["tmp_name"]);
        //echo "<BR>".$info[0]; //anchura
        //echo "<BR>".$info[1]; //altura
        //echo "<BR>".$info[2]; //1-GIF, 2-JPG, 3-PNG
        //echo "<BR>".$info[3]; //cadena de texto para el tag <img
 
        # Escapa caracteres especiales
        $imagenEscapes=mysqli_real_escape_string($link, file_get_contents($_FILES["userfile"]["tmp_name"]));
 
        # Agregamos la imagen a la base de datos
        $sql="INSERT INTO `imagephp` (anchura,altura,tipo,imagen) VALUES (".$info[0].",".$info[1].",'".$_FILES["userfile"]["type"]."','".$imagenEscapes."')";
        $result=mysqli_query($link,$sql);
 
        # Cogemos el identificador con que se ha guardado
        $id=mysqli_insert_id($link);
 
        # Mostramos la imagen agregada
        echo "<div class='mensaje'>Imagen agregada con el id ".$id."</div>";
    }else{
        echo "<div class='error'>Error: El formato de archivo tiene que ser JPG, GIF, BMP o PNG.</div>";
    }
}
?>
 
<h2>Selecciona una imagen</h2>
<form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]?>" method="POST">
    <input name="userfile" type="file">
    <p><input type="submit" value="Guardar Imagen">
</form>
 
<h2>Listado de las imagenes añadidas a la base de datos</h2>
<div class="listadoImagenes">
    <?php
    $result=mysqli_query($link,"SELECT * FROM imagephp ORDER BY id DESC");
    if($result)
    {
        while($row=mysqli_fetch_array($result))
        {
            echo "<img src='imagen_mostrar.php?id=".$row["id"]."' width='".$row["anchura"]."' height='".$row["aaltura"]."'>";
        }
    }
    ?>
</div>
</body>
</html>
 
 
 
 
 
 
 
 
 
 
 
<?php
########## imagen_mostrar.php ##########
# debe recibir el id de la imagen a mostrar
# http://www.lawebdelprogramador.com
 
# Conectamos con MySQL
$link=mysqli_connect("localhost","root","123456","imagen");
if (mysqli_connect_errno()) {
    die("Error al conectar: ".mysqli_connect_error());
}
 
# Buscamos la imagen a mostrar
$result=mysqli_query($link,"SELECT * FROM `imagephp` WHERE id=".$_GET["id"]);
$row=mysqli_fetch_array($result);
 
# Mostramos la imagen
header("Content-type:".$row["tipo"]);
echo $row["imagen"];
?>



Comentarios sobre la versión: Version 2 - mysqli_ (3)

gloria
27 de Septiembre del 2015
estrellaestrellaestrellaestrellaestrella
Cuando consulta las imagenes se ven como un archivo vacio, como solo el marco, podrias ayudarme con eso? Gracias amigo
Responder
Antonio
30 de Septiembre del 2015
estrellaestrellaestrellaestrellaestrella
A mí me sucede lo mismo
Responder
sale en negro a imagen
14 de Noviembre del 2018
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder

Comentar la versión: Version 2 - mysqli_

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

Version 3 - mysqli orientado a objetos
estrellaestrellaestrellaestrellaestrella(65)

Publicado el 2 de Diciembre del 2014gráfica de visualizaciones de la versión: Version 3 - mysqli orientado a objetos
301.444 visualizaciones desde el 2 de Diciembre del 2014
http://lwp-l.com/s70