Errore creazione Tabella in DB già esistente

di il
5 risposte

Errore creazione Tabella in DB già esistente

Buongiorno a tutti,
sto provando a creare una serie di tabelle all'interno di un DB già esistente partendo dai file CSV dei clienti con questo codice:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "Clienti";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}



// lettura dei files della cartella dove risiede il file con lo script
$dir = "E:\clienti\CSV";
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
//echo $file . "<br />\n";
// sql to create table
$sql = "CREATE TABLE $file (
`telefono` varchar(30) NOT NULL,
`email` varchar(30) NOT NULL,
`nome` varchar(30) NOT NULL,
`cognome` varchar(30) NOT NULL,
`data_contatto` varchar(30) NOT NULL,
`localita` varchar(30) NOT NULL,
)";


if ($conn->query($sql) === TRUE) {
echo "Table $file created successfully <br>";
} else {
echo "Error creating table $file: " . $conn->error . "<br>";
}

}
closedir($dh);
}
}
$conn->close();
?>

Il fatto è che mi da questo errore:

Error creating table .: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '( `telefono` varchar(30) NOT NULL, ...' at line 2
Error creating table ..: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '.. ( `telefono` varchar(30) NOT NULL, ...' at line 1
Error creating table cliente1.csv: Unknown database 'cliente1'
Error creating table cliente2.csv: Unknown database 'cliente2'
Error creating table cliente3.csv: Unknown database 'cliente3'
Error creating table cliente4.csv: Unknown database 'cliente4'

Come a mai?
Se provo a creare lo steso DB in maniera STATICA, cioè mettendo i nomi singolarmente dei clienti, la Tabella mi viene creata senza problemi nel DB Clienti mentre qui sembra che non crei la cartella perchè non trovi il DB.
Sapete aiutarmi??
Grazie

5 Risposte

  • Re: Errore creazione Tabella in DB già esistente

    Il punto non è permesso come carattere, solitamente significa db.table (scusate il termine ma anche se rimando al doc online difficilmente un neofita riesce a capire).
    Se ogni cliente è univoco puoi semplicemente togliere l'estensione del file mentre la parte antecedente ti occorre per creare la tabella.
  • Re: Errore creazione Tabella in DB già esistente

    Hormus ha scritto:


    Il punto non è permesso come carattere, solitamente significa db.table (scusate il termine ma anche se rimando al doc online difficilmente un neofita riesce a capire).
    Se ogni cliente è univoco puoi semplicemente togliere l'estensione del file mentre la parte antecedente ti occorre per creare la tabella.
    perdonami non ho capito in che punto è sbagliato.
    potresti spiegarmi meglio?
    Grazie
  • Re: Errore creazione Tabella in DB già esistente

    Quando effettui l'istruzione standard SQL con CREATE TABLE $file. Però non è corretto utilizzare cliente1.csv ma cliente1
  • Re: Errore creazione Tabella in DB già esistente

    Hormus ha scritto:


    Quando effettui l'istruzione standard SQL con CREATE TABLE $file. Però non è corretto utilizzare cliente1.csv ma cliente1
    Ho risolto facendo un TRIM alla variabile $file così:

    $nometabella = trim($file, '.csv');

    e sostituendo la variabile $file con la variabile $tabella ed ora mi genera tranquillamente le tabelle con i nomi dei CSV.
    Ora ho un altro problema, visto che queste tabelle vengono PRIMA generate e poi POPOLATE da i dati dei file CSV che ho sul pc dopo che lancio la pagina mi da questo errore

    Fatal error: Maximum execution time of 120 seconds exceeded in C:\xampp\htdocs\PHP7\creaDB.php on line 51

    Allora visto che alcuni file .csv sono di diversi GB e di conseguenza ci vuole più tempo per caricarli, difatti alcune tabelle sono state generate e popolate correttamente prima che il sistema si blocchi, infatti 3 Tabelle vengono create poi si blocca.
    Come posso fare in modo da togliere il limite di tempo? devo agire sul valore "max_execution_time=120" all'interno del file PHP.ini?
    Grazie a tutti.
  • Re: Errore creazione Tabella in DB già esistente

    Puoi impostare a 0 ma comunque APACHE sarà configurato per chiudere la connessione a 300 secondi https://www.php.net/manual/en/info.configuration.php#ini.max-execution-time
Devi accedere o registrarti per scrivere nel forum
5 risposte