Notice: Array to string conversion

1

Why does it show me the error: Array to string conversion?

If I just 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).

    
asked by omaza1990 13.12.2017 в 20:25
source

1 answer

3

Because you are concatenating an array and that can not be done.

Here you declare $nombre_accesorio as array

//Explode(): divide un string en varios string.
                $nombre_accesorio = explode(".", $imagen);

Here you pass as a parameter

//Insertamos en la base de datos.
            $sql = BD::anadirImagenAccesorio($nombre_accesorio);

And here you try to concatenate, something that can not be done.

static public function anadirImagenAccesorio($descripcion){
        $ejecucion = self::Conexion();
        $sql = "INSERT INTO accesorios (descripcion) VALUES (UPPER('".$descripcion."'))";//aquí
        ...
    }
    
answered by 13.12.2017 / 20:31
source