Why does it show me the error: Array to string conversion?
If I only pass a value to the function anadirImagenAccesorio
, and that value is a text.
PHP code:
static public function anadirImagenAccesorio ($descripcion) {
$ejecucion = self::Conexion();
$sql = "INSERT INTO accesorios (descripcion) VALUES (UPPER('" . $descripcion . "'))";
$ok = $ejecucion->exec($sql);
if ($ok == 1) {
return true;
} else {
return false;
}
}
HTML + PHP code:
<!-- Añadir un accesorio -->
<form action="<?php echo $_SERVER['PHP_SELF'];?>" enctype="multipart/form-data" name="anadir_accesorio" id="anadir_accesorio" method="POST">
<!-- Subir archivo -->
<label for="accesorio">Accesorio:</label>
<input type="file" name="accesorio" id="accesorio" />
<br/><br/>
<input type="submit" value="Subir" id="guardar_accesorio" name="guardar_accesorio" />
</form>
//Si pulsamos el botón "Guardar accesorio"...
if (isset($_POST["guardar_accesorio"])) {
//Subir el nombre de una imagen. $_FILES: Variables de subida de ficheros HTTP.
if (!isset($_FILES["accesorio"]) || $_FILES["accesorio"]["error"] > 0) {
echo "Ha ocurrido un error. Inténtelo de nuevo...";
} else {
//Comprobamos si la extensión el fichero es de tipo imagen y menor de 16MB.
$permitidos = array("image/jpg", "image/jpeg", "image/gif", "image/png");
$limite_kb = 16384;
//Si la extensión del fichero a subir, coincide con la de permitidos...
if (in_array($_FILES['accesorio']['type'], $permitidos) && $_FILES['accesorio']['size'] <= $limite_kb * 1024) {
//Guardamos la imagen como archivo local en "$imagen_temporal". [tmp_name] sería para archivo temporal (carpeta tmp de Xampp).
$imagen_temporal = $_FILES['accesorio']['name'];
//Tipo de extensión.
$tipo = $_FILES['accesorio']['type'];
//Escapamos los caracteres para que se puedan almacenar en la base de datos correctamente.
$imagen = $imagen_temporal;
//Explode(): divide un string en varios string.
$nombre_accesorio = explode(".", $imagen);
//Insertamos en la base de datos.
$sql = BD::anadirImagenAccesorio($nombre_accesorio);
} else {
echo "Formato de archivo no permitido o excede el tamaño límite de $limite_kb Kbytes.";
}
}
}
I must add that the accessories table has two fields: idaccesorio
(auto_increment - int) and descripcion
(string).
Because you're concatenating an array and that can't be done.
Here you declare
$nombre_accesorio
as arrayHere you pass it as a parameter
And here you try to concatenate it, which cannot be done.