XAMPP e file temporaneo

di il
3 risposte

XAMPP e file temporaneo

Buonasera,

ho un file php che mi fa scegliere un CSV e me lo importa dentro una tabella.

Il problema è che l'errore che la console mi da è questo 

<b>Fatal error</b>:  Uncaught mysqli_sql_exception: File 'C:\xampp\mysql\data\xampp	mpphp176F.tmp' not found (Errcode: 22 &quot;Invalid argument&quot;) in C:\xampp\htdocs\elimina_importa_lissoc.php:140
Stack trace:
#0 C:\xampp\htdocs\elimina_importa_lissoc.php(140): mysqli_query(Object(mysqli), 'LOAD DATA INFIL...')
#1 C:\xampp\htdocs\elimina_importa_lissoc.php(123): importData()
#2 {main}
  thrown in <b>C:\xampp\htdocs\elimina_importa_lissoc.php</b> on line <b>140</b><br />

sembrerebbe che non trovi un file temporaneo che si genererà sicuramente in background e sul quale io non ho potere alcuno.

il file elimina:importa_lissoc.php è questo :

<?php
require_once 'db_connect2.php'; // File di connessione al database

// Verifica se la tabella tmp_lissoc esiste già nel database
$query_check_table = "SHOW TABLES LIKE 'tmp_lissoc'";
$result_check_table = mysqli_query($conn, $query_check_table);

if (mysqli_num_rows($result_check_table) > 0) {
    // La tabella tmp_lissoc esiste, quindi eliminiamola prima di importare i dati
    $query_delete = "DROP TABLE tmp_lissoc";
    $result_delete = mysqli_query($conn, $query_delete);

    if (!$result_delete) {
        $response = [
            'success' => false,
            'message' => 'Si è verificato un errore durante l\'eliminazione della tabella tmp_lissoc.'
        ];
        exit(json_encode($response));
    }
}

// Crea la tabella tmp_lissoc
$query_create_table = "
CREATE TABLE IF NOT EXISTS `credimpresa`.`tmp_lissoc` (
    ----- I CAMPI DELLA TABELLA ------
    `NOTA FIDO` varchar(500),
    `NR. RATE PREAMMORTAMENTO` int(1)
) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;";

$result_create_table = mysqli_query($conn, $query_create_table);

if ($result_create_table) {
    // Importa il file CSV nella tabella tmp_lissoc
    importData();
} else {
    $response = [
        'success' => false,
        'message' => 'Si è verificato un errore durante la creazione della tabella tmp_lissoc.'
    ];
    exit(json_encode($response));
}

function importData() {
    global $conn;

    // Importa il file CSV nella tabella tmp_lissoc
    $csvFile = $_FILES['csv_lissoc_file']['tmp_name'];

    // Processa il file CSV e inserisci i dati nella tabella tmp_lissoc
    $query_import = "LOAD DATA INFILE '$csvFile' INTO TABLE tmp_lissoc FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES";
    $result_import = mysqli_query($conn, $query_import);

    if ($result_import) {
        $response = [
            'success' => true,
            'message' => 'I dati sono stati importati con successo nella tabella tmp_lissoc.'
        ];
    } else {
        $response = [
            'success' => false,
            'message' => 'Si è verificato un errore durante l\'importazione del file nella tabella tmp_lissoc.'
        ];
    }

    // Restituisci la risposta come JSON
    header('Content-Type: application/json');
    echo json_encode($response);
}
?>

L'ERRORE ME LO DA QUANDO PROVA A inserire i dati nella tabella. Non capisco il motivo dell'errore.

3 Risposte

  • Re: XAMPP e file temporaneo

    Lui si sta lamentando di un errore alla linea 140 del file elimina_importa_lissoc.php.

    thrown in <b>C:\xampp\htdocs\elimina_importa_lissoc.php</b> on line <b>140</b><br />

    Il file che hai postato tu ha solo 69 righe.

    Ad ogni modo, osservando il messaggio d'errore mi pare di capire che c'è uno spazio nel nome del file ('xampp mpphp176F.tmp', non credo sia un file temporaneo generato da PHP, ma semplicemente il file che viene usato lato server per memorizzare il file caricato lato client) e questo potrebbe dare fastidio. Se il file che stai cercando di importare ha uno spazio nel nome, prova a rinominarlo eliminando lo spazio.

    Poi magari non c'entra nulla, ma un tentativo lo farei.

  • Re: XAMPP e file temporaneo

    Ciao,

    grazie per la risposta.

    no il file che tento di importare si chiama lissoc.csv enon ha spazi. 

  • Re: XAMPP e file temporaneo

    E qual è la riga 140?

    Ad esempio, nella funzione inportData() vedo questa riga:

    $query_import = "LOAD DATA INFILE '$csvFile' INTO TABLE tmp_lissoc FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES";

    Che io mi aspetterei sia scritta così:

    $query_import = "LOAD DATA INFILE '" . $csvFile . "' INTO TABLE tmp_lissoc FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES";
Devi accedere o registrarti per scrivere nel forum
3 risposte