Tengo un formulario en el que el usuario sube un archivo CSV con una serie de campos predefinidos.
El problema llega a la hora de guardar esos campos en una tabla MySQL, no consigo hacerlo. Tengo el siguiente codigo:
Código PHP:
   //Si el archivo NO esta vacio, y NO da error -->
if(!empty($archivo) && !$archivo['error']){
    $ext = (string)end(explode('.', $archivo['name']));
    ($archivo['name'] != $ext) ? strtolower($ext) : '';
    // La ruta debe cambiar los slash. Si esto corriese en Linux habría que revisarlo
    // Se verifica que el archivo enviado es un CSV
    if($ext == 'csv'){
 
 
        //Abre el archivo en modo de solo lectura con el cursos al principio, y lo setea a --rpoint--
        $rpoint = fopen($archivo['tmp_name'],'r');
        
        //Obtiene una linea desde el handle --rpoint-- con parametro a 5000 longitud de la linea mas larga. y lo setea a --data--
        $data = fgetcsv($rpoint, 5000, ";");
        /
        //Coge la ruta de TEMP y le concatena el nombre de archivo hasseado en md5 . y lo setea a --tfile--
        $tfile = TEMP . md5($archivo['name']);
        
        chmod($tfile, 0755);
        chmod($archivo['tmp_name'], 0755);    
        //Realiza una copia de archivo en destino (tfile)
        if (!copy($archivo['tmp_name'],$tfile)) {
            echo "Error al copiar $archivo...\n";
        }
        //Abre el fichero en la ruta destino (tfile) y lo setea a wpoint
        $wpoint = fopen($tfile,'w','r');
        //remplaza \\ en tfile y lo setea a  --ruta--
        $ruta = str_replace('\\','/',$tfile);
        //coloca el csv (devuelve FALSE si error)
        fputcsv($wpoint,$data,";"); 
        
                //Aqui voy controlando los errores posibles en cada posicion del CSV
        
        $row = 2;
            while (($data = fgetcsv($rpoint, 1000, ";")) !== FALSE) {
                $num = count($data);
                echo "cuenta --> " . $num . "<br/>";
                $skipl = true;
                for($i = 0; $i < $num; $i++){
                    $skipl = $skipl && ($data[$i] == '');
                }
                if(!$skipl){
                    //idTipoSuelo
                    if ($data[0] == '' || $data[0] > '16' || $data[0] == '1') {
                        $sMensaje = 'Existen erores en el archivo de carga de activos. <a href="#ListadoErrores">Consúltelos al final de la página.</a>';
                        $errores['idTipoSuelo'][] = $row;
                        }
                    //C_Latitud    
                    if ($data[1] != '') {
                        for ($i=0; $i<strlen($data[1]); $i++){ 
                              if (strpos($permitidosLatLong, substr($data[1],$i,1))===false){ 
                                    $errores['C_Latitud'][] = $row;
                                    $sMensaje = 'Existen erores en el archivo de carga de activos. <a href="#ListadoErrores">Consúltelos al final de la página.</a>';
                              } 
                           } 
                    }...//Asi hasta 51 que es el numero de posiciones
fputcsv($wpoint,$data,";"); 
    Código PHP:
   $sSQL = " LOAD DATA INFILE '" . $ruta . "'" .
                    " INTO TABLE ga_tmpActivosDocumentos " .
                    " FIELDS TERMINATED BY ';'" .
                    " LINES TERMINATED BY '\\n' " .
                    " IGNORE 1 LINES (idTipoSuelo,C_Latitud,C_Longitud,Referencia,Zona,idProvincia,Poblacion,TituloActivo,Descripcion,Superficie,Gastos,Equipamiento,EquipamientoEN,GestionDocumental,PrecioVenta,CampoLibre1_Texto,CampoLibre1_Titulo,CampoLibre1_TextoEN,CampoLibre1_TituloEN,Activo," .
                    " IMG1,IMG_Desc1,IMG_Desc1EN,IMG2,IMG_Desc2,IMG_Desc2EN,IMG3,IMG_Desc3,IMG_Desc3EN,IMG4,IMG_Desc4,IMG_Desc4EN,DOC1,DOC_Desc1,DOC_Desc1EN,DOC2,DOC_Desc2,DOC_Desc2EN,DOC3,DOC_Desc3,DOC_Desc3EN,DOC4,DOC_Desc4,DOC_Desc4EN,URL1,URL_Desc1,URL_Desc1EN,URL2,URL_Desc2,URL_Desc2EN)" .
                    " SET idCliente = " . $sActivoCliente . "" ;
            echo $sSQL;        
            if($oBD->fnModifica($sSQL)){ 
    
He mirado otros topic muy parecidos y bastante antiguos, pero no doy con ello.
Un SALUDO
 
 
 Cargar archivo CSV e insertarlo en tabla.
 Cargar archivo CSV e insertarlo en tabla. 
 
 






