error when adding data to DB Call to a member function bind_param () on boolean

0

I've been looking at this code for hours and I can not find the error:

 function agregar_a_productos($datos) {

    $ok = "false";
    $codigo = $datos[0];
    $sql = "SELECT COUNT(*) total_registro FROM item_oracle WHERE codigo_articulo='". $codigo."'";
    $rs = $this->consulta($sql);
    while ($row = mysqli_fetch_array($rs, MYSQLI_ASSOC)) {
        $total_registro = $row["total_registro"];
        if ($total_registro == 0) {
            $sql = "INSERT INTO item_oracle (codigo_articulo,descripcion_articulo,categoria,subcategoria,terceracategoria,alquiler,disponibilidad_foto,marca,tipo,calibre,peso, longitud,capacidad,color,tamano,sistemafreno,gearratio,recuperaciondelinea,rodamentos,medidas,modelo,nombre) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            $stmt = $this->consulta_prepared($sql);
            $stmt->bind_param("ssssiissssssssssssss", $datos[0], $datos[1], $datos[2], $datos[3], $datos[4], $datos[5], $datos[6], $datos[7], $datos[8], $datos[9], $datos[10], $datos[11], $datos[12], $datos[13], $datos[14], $datos[15], $datos[16], $datos[17], $datos[18], $datos[19], $datos[20], $datos[21]);
            $stmt->execute();

            if ($stmt) {
                $ok = "true";
            }else{
                $ok="error : ".$this->error; 
            }

        } else {

            $sql = "UPDATE item_otracle SET 
            descripcion_articulo=?, 
            categoria=?, 
            subcategoria=?, 
            terceracategoria=?,
            alquiler=?, 
            disponibilidad_foto=?, 
            marca=?, 
            tipo=?, 
            calibre=?, 
            peso=?,  
            longitud=?, 
            capacidad=?, 
            color=?, 
            tamano=?, 
            sistemafreno=?, 
            gearratio=?, 
            recuperaciondelinea=?, 
            rodamentos=?, 
            medidas=?, 
            modelo=?, 
            nombre=?  
            WHERE codigo_articulo=?"; 

            $stmt = $this->consulta_prepared($sql);
            $stmt->bind_param("sssiisssssssssssssss", 
                              $datos[1], 
                              $datos[2], 
                              $datos[3], 
                              $datos[4], 
                              $datos[5], 
                              $datos[6], 
                              $datos[7], 
                              $datos[8], 
                              $datos[9], 
                              $datos[10], 
                              $datos[11], 
                              $datos[12], 
                              $datos[13], 
                              $datos[14], 
                              $datos[15], 
                              $datos[16], 
                              $datos[17], 
                              $datos[18], 
                              $datos[19], 
                              $datos[20], 
                              $datos[21], 
                              $datos[0]);
            $stmt->execute();
            if ($stmt) {
                $ok = "true";
            }
        }
    }
    $arr = array('ok' => $ok);
    return ($arr);
}
    
asked by Cesar 02.08.2018 в 23:32
source

0 answers