1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !
Résoudre un problème d'importation CSV
Ce guide explique comment résoudre un problème d'importation de fichier .csv.
Fonction "load data local infile" désactivée
La fonction "LOAD DATA LOCAL INFILE" permet d'importer un fichier CSV dans une table MySQL et est malheureusement désormais fréquemment utilisée par les pirates pour obtenir l'accès à certains sites hébergés sur des machines acceptant cette fonction.
Pour lutter contre les actes de malveillances et continuer à protéger autant que possible les données de nos clients, nous avons désactivé la fonction "LOAD DATA LOCAL INFILE". Ne sont pas concernées par cette modification les personnes important leurs fichiers CSV (à condition de ne pas cocher "CSV via LOAD DATA") via phpMyAdmin.
Voici une alternative pour continuer à importer des données au format CSV dans une table MySQL, un exemple en quelques lignes PHP faciles à implémenter dans votre script PHP ou simplement dans un nouveau fichier PHP de votre répertoire /web:
// Le code proposé ci-dessus ne l'est qu'à titre d'exemple pour que vous puissiez
// comprendre comment remplacer cette fonction, libre à vous de développer
// votre propre moyen plus efficace pour insérer des données.
$NomDuFichier = "data.csv";
// ouverture du fichier csv en lecture
$handle = fopen($NomDuFichier, "r");
if ($handle) {
// decomposition de chaque ligne du fichier csv
while (($data = fgetcsv($handle, 1000, ";", """)) !== FALSE) {
$num = count($data)-1;
// generation de la requete SQL
$query = "INSERT INTO `test` VALUES (";
for ($c=0; $c < $num; $c++) {
$query .= "'" . mysql_real_escape_string($data[$c]) ."',";
}
$query .= "'" . mysql_real_escape_string($data[$num]) ."')";
// insertion de la ligne dans la base MySQL
mysql_query($query, $link) or die (mysql_error());
$query = NULL;
}
// fermeture du fichier csv
fclose($handle);
} else {
echo "
Erreur: impossible d'ouvrir le fichier.
\n";exit(1);
}
?>
Il nous est malheureusement impossible de vous indiquer précisément à quel endroit de votre script ces lignes de code doivent être ajoutées. Si vous n'arrivez pas à localiser l'endroit approprié, veuillez contacter votre webmaster ou l'un de nos partenaires sur la page suivante: http://partenaires.infomaniak.com/appel-offres/.
Si l'alternative proposée pose problème lorsque vous soumettez plusieurs fichiers CSV à lire et que la procédure par exemple se termine sans renvoi de message malgré les points de gestion des messages dans le fichier PHP, il est possible que les tables et les champs utilisés soient mal indexés et dans ce cas, contactez également votre webmaster.
Nous vous invitons également à consulter la documentation de PHP concernant fgetcsv ici: http://php.net/manual/fr/function.fgetcsv.php