Problemas al insertar foto en base de datos MySQL

iniciopublic Seguir

Préstamo
Pi
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
16 Jul 2013
Mensajes
5.060
la verdad he tratado y no me funciona y me sale un error

este es el codigo:

PHP:
 <td height="47" valign="bottom"> <p>Foto Alumno: 
                <input type="file" name="foto"></p></TD>


$foto = $_FILES["foto"];

$dbhost="localhost";
$dbname="prueba";
$dbuser="root";
$dbpass="12345";
	
$con = mysql_connect($dbhost,$dbuser,$dbpass);
if (!$con){die('ERROR DE CONEXION CON MYSQL: ' . mysql_error());}

$database = mysql_select_db("$dbname",$con);
if (!$database){die('ERROR CONEXION CON BD: '.mysql_error());}
 
 $sql_i="insert into alumno(foto)

values('".$foto."')";
              

    $result = mysql_query($sql_i);
if (! $result){
echo "La consulta SQL contiene errores.".mysql_error();
exit();
}
else
{
	echo "<center><font color='RED'>DATOS INSERTADOS CORRECTAMENTE</font><aref='#'>Volver</a>";
}
}
?>


es asi o le falta algo mas?





saludos
 

vicram10

Épsilon
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
8 May 2013
Mensajes
751
Edad
39
Primero que nada deberias de colocar todo el codigo, por que ahi no se ve si usas un "form" para enviar la peticion.
Tampoco dices que error tienes, deberas de especificar un poco mas para poder ayudarte.

Cabe mencionar que el ejemplo que te pasaron es lo que necesitas, primeramente deberas de subir a tu servidor el archivo y luego usar la url donde alojaste dicho archivo y desde ahi en mas ya el codigo es el mismo del ejemplo que te pasaron
 

UnderD

Beta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
5 Sep 2013
Mensajes
36
Además, no olvides colocar este atributo en tu formulario enctype="multipart/form-data"

:rolleyes:
 

Fabián Rodríguez

Lambda
Programador
Verificación en dos pasos activada
Desde
24 Mar 2008
Mensajes
2.862
Comprueba bien tu variable "foto", lo que debes revisar antes de ejecutar la consulta es si efectivamente esta variable te devuelve la ruta (string) en donde está la imagen.
 

cristianriv

Delta
Verificado por Whatsapp
Desde
28 Dic 2011
Mensajes
728
la verdad he tratado y no me funciona y me sale un error

este es el codigo:

PHP:
 <td height="47" valign="bottom"> <p>Foto Alumno: 
                <input type="file" name="foto"></p></TD>


$foto = $_FILES["foto"];

$dbhost="localhost";
$dbname="prueba";
$dbuser="root";
$dbpass="12345";
	
$con = mysql_connect($dbhost,$dbuser,$dbpass);
if (!$con){die('ERROR DE CONEXION CON MYSQL: ' . mysql_error());}

$database = mysql_select_db("$dbname",$con);
if (!$database){die('ERROR CONEXION CON BD: '.mysql_error());}
 
 $sql_i="insert into alumno(foto)

values('".$foto."')";
              

    $result = mysql_query($sql_i);
if (! $result){
echo "La consulta SQL contiene errores.".mysql_error();
exit();
}
else
{
	echo "<center><font color='RED'>DATOS INSERTADOS CORRECTAMENTE</font><aref='#'>Volver</a>";
}
}
?>


es asi o le falta algo mas?





saludos

Hola compañero, pues es imposible guardar una foto en una base de datos, eso es imposible, en la base de datos se escriben solo, única y exclusivamente datos, no se guardan archivos físicos o multimediales, es eso o tienes un error de concepto. El script de código lo veo bien, quizás el error te sale al momento de escribir la foto en el server, primero salvarla en un tu server en una carpeta uploads, busca métodos que te permitan hacerlo y luego recoges la url donde quedo guardada y la insertas en la tabla donde estará, el sql del script no tiene la forma de una sentencia INSERT, ten cuidado con eso.

Saludos.
 

vicram10

Épsilon
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
8 May 2013
Mensajes
751
Edad
39
En realidad de poder, se puede, dejo un ejemplo de como.

Primeramente creamos nuestra bd y lo llamamos "bd_laboratorio", luego creamos la tabla usando este sql

Insertar CODE, HTML o PHP:
CREATE TABLE IF NOT EXISTS `subir_imagen` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nombre_imagen` text NOT NULL,
  `imagen` mediumblob NOT NULL,
  `tipo` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Creamos un archivo llamado index.php

PHP:
<?php
	//conexion a la base de datos
	$link = mysql_connect('localhost', 'root', '');
	if (!$link)
	   die('Error al conectarse con MySQL: ' . mysql_error().' <br>Número del error: '.mysql_errno());
	if (! @mysql_select_db("bd_laboratorio",$link)){
	   echo "No se pudo conectar correctamente con la Base de datos";
	   exit();
	}
	
	
	//le dimos click al boton grabar?
	if (isset($_POST['guardar']))
	{
		$nombre = $_FILES['imagen']['name'];
		$imagen_temporal = $_FILES['imagen']['tmp_name'];
		$type = $_FILES['imagen']['type'];
		//archivo temporal en binario
		$itmp = fopen($imagen_temporal, 'r+b');
		$imagen = fread($itmp, filesize($imagen_temporal));
		fclose($itmp);
		//escapando los caracteres
		$imagen = mysql_real_escape_string($imagen);		
		$respuesta = mysql_query("insert into subir_imagen (id, nombre_imagen, imagen, tipo) 
		values(0, '$nombre', '$imagen', '$type')", $link);
		//redireccionamos
		header("Location: index.php?".($respuesta ? 'ok' : 'error'));
	}
	
	//guardado OK
	if (isset($_GET['ok']))
	{
		echo '<p>Guardado Exitosamente</p>';	
	}
	
	//si no se guardo de manera correcta?
	if (isset($_GET['error']))
	{
		echo '<p>Ocurrio un error a la hora de realizar la insercion...</p>';	
	}

	//formulario que nos permite subir a la BD el archivo
	echo '
	<form action="index.php" enctype="multipart/form-data" method="post">
		<input type="file" name="imagen" id="imagen" />
		<input type="submit" value="Guardar" name="guardar" />
	</form>';
	
	$sql = mysql_query("select id, nombre_imagen, imagen from subir_imagen", $link);
	$imagenes = array();
	while($row = mysql_fetch_assoc($sql))
	{
		$imagenes[$row['id']] = array(
			'id' => (int) $row['id'],
			'nombre' => $row['nombre_imagen'],
			'imagen' => $row['imagen'],
		);
	}
	
	//existen imagenes para mostrar?
	if (!empty($imagenes))
	{
		echo '<span style="text-decoration:underline;">Imagenes guardadas en la BD:</span>';
		foreach($imagenes as $valor)
			echo '<p>', $valor['id'] ,' - ' , $valor['nombre'] ,' - <a href="ver.php?i=', $valor['id'] ,'">Ver Imagen</a></p>';
	}
?>

Este se encargara de realizar la insercion y posterior mostrado de un listado de los datos que guardamos.

Para visualizar la imagen creamos el archivo ver.php

PHP:
<?php
	//conexion a la base de datos
	$link = mysql_connect('localhost', 'root', '');
	if (!$link)
	   die('Error al conectarse con MySQL: ' . mysql_error().' <br>Número del error: '.mysql_errno());
	if (! @mysql_select_db("bd_laboratorio",$link)){
	   echo "No se pudo conectar correctamente con la Base de datos";
	   exit();
	}
	
	//si enviamos por parametro la id
	$id = (int) $_GET['i'];
	
	//no hay id
	if (empty($id))
		//redireccionamos
		header("Location: index.php");	
		
	$sql = mysql_query("select id, imagen, tipo from subir_imagen where id = $id", $link);
	$imagenes = array();
	while($row = mysql_fetch_assoc($sql))
		$imagenes[$row['id']] = array(
			'id' => $row['id'],
			'imagen' => $row['imagen'],
			'tipo' => $row['tipo'],
		);
	//existen imagenes para mostrar?
	if (!empty($imagenes))
	{
		header("Content-Type: ".$imagenes[$id]['tipo']);
		echo $imagenes[$id]['imagen'];
	}
?>

De esta forma veras que si se puede sin subir al servidor guardar imagenes utilizando la base de datos, claro esta que necesitas mucho espacio de base de datos para guardar las imagenes ahi.

Adjunto ejemplos de como quedaria.

Imagen1.jpg

Imagen2.jpg
 

iniciopublic

Préstamo
Pi
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
16 Jul 2013
Mensajes
5.060
Hola compañero, pues es imposible guardar una foto en una base de datos, eso es imposible, en la base de datos se escriben solo, única y exclusivamente datos, no se guardan archivos físicos o multimediales, es eso o tienes un error de concepto. El script de código lo veo bien, quizás el error te sale al momento de escribir la foto en el server, primero salvarla en un tu server en una carpeta uploads, busca métodos que te permitan hacerlo y luego recoges la url donde quedo guardada y la insertas en la tabla donde estará, el sql del script no tiene la forma de una sentencia INSERT, ten cuidado con eso.

Saludos.

gracias me funciono perfecto
 

locoporti

Épsilon
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
6 Dic 2011
Mensajes
886
La imagen no se guarda en mysql, la imagen se almacena en una carpeta. En mysql solo se guarda el ID o el nombre de la imagen.
si necesitas ayuda MP
 

iniciopublic

Préstamo
Pi
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
16 Jul 2013
Mensajes
5.060
Pero para la conclusión del tema seria bueno que comentases con detalle la solución, Saludos

Bueno en detalle no sabria decirlo , pero ami codigo le falta varias cosas como otros detalle de la foto como tipo , tamaño ,formato a ingresar a ala base de datos , el codigo que me facilito el usuario vicram10 , tiene lo que le faltaba


saludos
 

vicram10

Épsilon
Programador
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
8 May 2013
Mensajes
751
Edad
39
La imagen no se guarda en mysql, la imagen se almacena en una carpeta. En mysql solo se guarda el ID o el nombre de la imagen.
si necesitas ayuda MP

la verdad si se puede, revisa mi post que se encuentra en la primera pagina y veras ;)
 

dani002

Zeta
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
25 Jul 2011
Mensajes
1.998
esta haciendo lo que dice locoporti guardar la ruta de la imagen o nombre ...
 
Arriba