1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| $mysqli = new mysqli('localhost', 'root', '', 'previsions_meteo');
$mysqli->set_charset("utf8");
if ( $mysqli->connect_errno ) {
printf("Echec de la connexion %s\n", $mysqli->connect_error);
exit();
}
if ( false !== $handle = fopen("./csv/meteo.csv", "r") ) {
$result = $mysqli->query('SELECT count(*) FROM meteo');
$row = $result->fetch_array();
// on écrit la requête avec des placeholders ?
$query = 'INSERT INTO meteo (date,
ville,
periode,
resume,
identifiant_de_resume,
temperature_minimale,
temperature_maximale,
commentaire)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)';
// on prépare la requête
$stmt = $mysqli->prepare($query);
// on lie les variables à la requête préparée
$stmt->bind_param('ssssssss', $date, $ville, $periode, $resume, $id_resume, $t_min, $t_max, $commentaire);
while ( false !== $values = fgetcsv($handle, 1000, ";") ) {
if ( $row[0] == 0 ) { // ^-- on choisit le bon délimiteur de champs
// pas besoin de faire un explode par la
// suite, ni de boucle
// on met à jour les variables liées avec les valeurs des champs de la ligne du csv
list($date, $ville, $periode, $resume, $id_resume, $t_min, $t_max, $commentaire) = $values;
// on exécute la requête préparée
$result = $stmt->execute();
if ( $result ) {
$message = '<h2>Ajout dans la base de données effectué avec succès</h2>';
} else {
$message = 'Echec de l\'ajout dans la base de données';
}
} else {
$message = 'Les informations du fichier csv éxistent déjà dans la table';
}
}
// on ferme la requête
$stmt->close();
}
fclose($handle); |
Partager