Buongiorno a tutti,
ho creato questa pagina PHP che mi serve PRINCIPALMENTE per caricare, all'interno di una Tabella MySql con il comando LOAD DATA INFILE, i dati contenuti in diversi file ".csv".
Ho fatto in modo tale che ogni file CSV avesse un numero UNIVOCO, in modo tale da sapere da quale CSV veniva il dato, la query SQL funziona perfettamente MA anziché aggiungere i dati me li sovrascrive, difatti mi trvo solo gli ultimi dati e non quelli precedenti.
Il codice funziona ma i dati vengono sovrascritti, di fatti io ho 5 file CSV e trovo i dati solo dell'ultimo file in ordine alfabetico, gli altri dati sono sovrascritti in quanto l'output a video mi dice che sono stati creati.
Prima che me lo chiediate la Variabile "$Cod_Cliente" è settata a -1 all'inizio perchè il sistema prende anche "." e ".." altrimenti verebbe tutto sfalzato di 2 in avanti.
Sapete dirmi come mai mi prende e mi sovrascrive anzichè aggiungere in maniere automatica?
Sapete dirmi come mai??
Grazie
ho creato questa pagina PHP che mi serve PRINCIPALMENTE per caricare, all'interno di una Tabella MySql con il comando LOAD DATA INFILE, i dati contenuti in diversi file ".csv".
Ho fatto in modo tale che ogni file CSV avesse un numero UNIVOCO, in modo tale da sapere da quale CSV veniva il dato, la query SQL funziona perfettamente MA anziché aggiungere i dati me li sovrascrive, difatti mi trvo solo gli ultimi dati e non quelli precedenti.
Codice:
<?php
set_time_limit(0);
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "unico";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$Cod_Cliente=-1;
// sql to create table
$sql = "CREATE TABLE DB_Unico (
`Cod_Cliente` int(6) NOT NULL,
`phone` varchar(30) NOT NULL,
`email` varchar(30) NOT NULL,
`nome` varchar(30) NOT NULL,
`cognome` varchar(30) NOT NULL,
)";
if ($conn->query($sql) === TRUE) {
echo "Table DB_Unico created successfully <br>";
} else {
echo "Error creating table DB_Unico: " . $conn->error . "<br>";
}
// lettura dei files della cartella dove risiede il file con lo script
$dir = 'C:\Users\XXX\Desktop\clienti';
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) { // questo è un ciclo che si ripete fin tanto che non è stato letto tutto il contenuto della cartella
$nometabella = pathinfo($file, PATHINFO_FILENAME);
$sql2 = "LOAD DATA INFILE '$file' INTO TABLE DB_Unico FIELDS TERMINATED by ',' LINES TERMINATED BY '\r\n'
IGNORE 1 LINES (phone, email, nome, cognome)";
if ($conn->query($sql2) === TRUE) {
echo "Table DB_Unico popoleted successfully with $nometabella with code $Cod_Cliente <br>";
} else {
echo "Error popoleted table DB_Unico: " . $conn->error . "<br>";
}
$sql3 = "UPDATE `DB_Unico` SET `Cod_Cliente`=$Cod_Cliente";
if ($conn->query($sql3) === TRUE) {
echo "Table DB_Unico Set Code $Cod_Cliente successfully at $nometabella <br>";
} else {
echo "Error Set Code table DB_Unico: " . $conn->error . "<br>";
}
$Cod_Cliente++;
}
closedir($dh);
}
}
$conn->close();
?>
Il codice funziona ma i dati vengono sovrascritti, di fatti io ho 5 file CSV e trovo i dati solo dell'ultimo file in ordine alfabetico, gli altri dati sono sovrascritti in quanto l'output a video mi dice che sono stati creati.
Prima che me lo chiediate la Variabile "$Cod_Cliente" è settata a -1 all'inizio perchè il sistema prende anche "." e ".." altrimenti verebbe tutto sfalzato di 2 in avanti.
Sapete dirmi come mai mi prende e mi sovrascrive anzichè aggiungere in maniere automatica?
Sapete dirmi come mai??
Grazie