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.
It looks like there are a few issues with the code you provided that could be causing your images not to be saved to the database. Here are a few suggestions to help you troubleshoot the problem:
The line $target = 'images'; is creating a variable called $target but it is not being used in any other lines of code. It is likely that you meant to use $target as the destination for the copy function, instead of $destination.
You are not providing a path for the destination of the image, you should replace $destination by the path you want to save the image.
In the line copy($tmp, $destination);, the copy function is being used to copy the temporary file to the destination, but it is not providing a new file name for the image. This means that if an image with the same name already exists in the destination, it will be overwritten. You should give a new name to the [url=https://apkinu.com/gbwhatsapp-download/]image[/url] before saving it in the destination.
The line echo $_POST['name'].' Temporary: '.$tmp; is only providing you with the name of the file and its temporary path. This line is useful for debugging but it should be removed once you are sure that the image is being uploaded correctly.
Finally, you are not inserting the image into the database. You should use a query like INSERT INTO images (name, path) VALUES ('$name', '$target') to insert the image data into the database.
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.
16/01/2023 07:16
It looks like there are a few issues with the code you provided that could be causing your images not to be saved to the database. Here are a few suggestions to help you troubleshoot the problem:
The line $target = 'images'; is creating a variable called $target but it is not being used in any other lines of code. It is likely that you meant to use $target as the destination for the copy function, instead of $destination.
You are not providing a path for the destination of the image, you should replace $destination by the path you want to save the image.
In the line copy($tmp, $destination);, the copy function is being used to copy the temporary file to the destination, but it is not providing a new file name for the image. This means that if an image with the same name already exists in the destination, it will be overwritten. You should give a new name to the [url=https://apkinu.com/gbwhatsapp-download/]image[/url] before saving it in the destination.
The line echo $_POST['name'].' Temporary: '.$tmp; is only providing you with the name of the file and its temporary path. This line is useful for debugging but it should be removed once you are sure that the image is being uploaded correctly.
Finally, you are not inserting the image into the database. You should use a query like INSERT INTO images (name, path) VALUES ('$name', '$target') to insert the image data into the database.