Estoy intentando guardar unas imágenes en una base de datos en phpmyadmin, aunque ahora consigo que no me de error, no se copia la foto ni me aparecen en la base de datos.
Pego código de lo que tengo hecho.
<?php
$con = mysqli_connect("localhost","root", "", "basededatos") or die ("No se ha podido conectar con la base de datos"); //conexion, usuario, contrase?a, nombreBBDD
Hola Patricia,
de la forma que lo haces, no guardas la imagen en la base de datos, intentas copiarla a una carpeta, pero no modificas nada en la base de datos, es decir, si has copiado la imagen en una carpeta debes guardar en la base de datos la ruta hacía esa imagen, te pongo un ejemplo:
Hola Patricia,
de la forma que lo haces, no guardas la imagen en la base de datos, intentas copiarla a una carpeta, pero no modificas nada en la base de datos, es decir, si has copiado la imagen en una carpeta debes guardar en la base de datos la ruta hacía esa imagen, te pongo un ejemplo:
if(isset($_POST) && !empty($_POST)){
if( isset($_FILES['imagen']) ){
$nombre = $_FILES['imagen']['name'];
$ruta = "imagenes/".$nombre;
if( file_exists($ruta) ){
echo "La imagen ya existe";
}else{
move_uploaded_file($nombre,$ruta);
$con = mysqli_connect("localhost","root", "", "basededatos") or die ("No se ha podido conectar con la base de datos");
$sql = "INSERT INTO nombre_de_la_tabla (imagen) VALUES ('.$ruta.')";
if(mysqli_query($con, $sql)){
echo "la imagen se guardado correctamente"
}else{
echo "Ha habido un error al guardar la imagen"
}
@mysqli_close($con); }
}
}
Este código no lo probado, lo que intento es orientarte, si lo que quieres es guardar la imagen directamente en la base de datos la tienes que guardar en un campo blob y sería de otra forma.
Saludos
Yo, teniendo en cuenta que por performance, no es bueno almacenar imágenes en BBDD sino optar por alguna de las siguientes opciones:
- Almacenar las imágenes como assets de tu aplicación o sitio web en la carpeta public/assets/img o similar. Siempre y cuando éstas deban ser accesibles sin ningún tipo de restricción. Y almacenar la ruta en la BD. A la hora de almacenar la ruta lo mejor es tener una constante o variable en el lenguaje que uses denominada algo así como basePath y luego concatenar con el nombre del archivo y su extensión. Si quieres, también podrías optar por codificar de algún modo el nombre del archivo para no hacerlo fácilmente accesible por temas de seguridad o agregar algún token, y que sólo los que dispongan de ese token o sean propietarios puedan tener acceso a las mismas.
- La segunda opción pero que conlleva el coste de almacenamiento es codificar en base64 tus imágenes y almacenarlas en un campo específico de tu BD elegida.
Estoy intentando guardar unas imágenes en una base de datos en phpmyadmin, aunque ahora consigo que no me de error, no se copia la foto ni me aparecen en la base de datos.
Pego código de lo que tengo hecho.
<?php
$con = mysqli_connect("localhost","root", "", "basededatos") or die ("No se ha podido conectar con la base de datos"); //conexion, usuario, contrase?a, nombreBBDD
echo "<form method='post' action='' enctype='multipart/form-data'>
Nombre:<input type='text' name='nombre' size='8' maxlength='8'/><br/>
Imagen:<input type='file' name='imagen'/><br/>
<input type='submit' values='guardar' name='guardar'/><br/>";
if (isset($_POST['guardar'])){
//recuperar
$nom = $_POST['nombre'];
//$nombre = $_FILES['imagen'][$nom];
$tmp = $_FILES['imagen']['tmp_name'];
$destino = 'imagenes';
echo $_POST['nombre'].' Temporal: '.$tmp;
//Movera el archivo del folder temporal a una nueva ruta
//move_uploaded_file($tmp, $destino.'/'.$nom);
copy($tmp, $destino);
}
mysqli_close($con);
?>
24/05/2016 13:16
de la forma que lo haces, no guardas la imagen en la base de datos, intentas copiarla a una carpeta, pero no modificas nada en la base de datos, es decir, si has copiado la imagen en una carpeta debes guardar en la base de datos la ruta hacía esa imagen, te pongo un ejemplo:
if(isset($_POST) && !empty($_POST)){
if( isset($_FILES['imagen']) ){
$nombre = $_FILES['imagen']['name'];
$ruta = "imagenes/".$nombre;
if( file_exists($ruta) ){
echo "La imagen ya existe";
}else{
}
}
24/05/2016 13:27
de la forma que lo haces, no guardas la imagen en la base de datos, intentas copiarla a una carpeta, pero no modificas nada en la base de datos, es decir, si has copiado la imagen en una carpeta debes guardar en la base de datos la ruta hacía esa imagen, te pongo un ejemplo:
if(isset($_POST) && !empty($_POST)){
if( isset($_FILES['imagen']) ){
$nombre = $_FILES['imagen']['name'];
$ruta = "imagenes/".$nombre;
if( file_exists($ruta) ){
echo "La imagen ya existe";
}else{
move_uploaded_file($nombre,$ruta);
$con = mysqli_connect("localhost","root", "", "basededatos") or die ("No se ha podido conectar con la base de datos");
$sql = "INSERT INTO nombre_de_la_tabla (imagen) VALUES ('.$ruta.')";
if(mysqli_query($con, $sql)){
echo "la imagen se guardado correctamente"
}else{
echo "Ha habido un error al guardar la imagen"
}
@mysqli_close($con); }
}
}
Este código no lo probado, lo que intento es orientarte, si lo que quieres es guardar la imagen directamente en la base de datos la tienes que guardar en un campo blob y sería de otra forma.
Saludos
04/06/2016 21:27
- Almacenar las imágenes como assets de tu aplicación o sitio web en la carpeta public/assets/img o similar. Siempre y cuando éstas deban ser accesibles sin ningún tipo de restricción. Y almacenar la ruta en la BD. A la hora de almacenar la ruta lo mejor es tener una constante o variable en el lenguaje que uses denominada algo así como basePath y luego concatenar con el nombre del archivo y su extensión. Si quieres, también podrías optar por codificar de algún modo el nombre del archivo para no hacerlo fácilmente accesible por temas de seguridad o agregar algún token, y que sólo los que dispongan de ese token o sean propietarios puedan tener acceso a las mismas.
- La segunda opción pero que conlleva el coste de almacenamiento es codificar en base64 tus imágenes y almacenarlas en un campo específico de tu BD elegida.
Saludos.