Insert data d'un fichier csv en db
helloword95
-
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30427 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je débute en php et j'aimerai insert des données d'un csv dans ma db mais je ne suis pas sûr de ma démarche, en outre j'ai plein d'erreurs du style "Undefined offset" etc.
Voici mon code
Lire le fichier csv et le renvoyer sous forme de tableau
Insert dans la Db
Je débute en php et j'aimerai insert des données d'un csv dans ma db mais je ne suis pas sûr de ma démarche, en outre j'ai plein d'erreurs du style "Undefined offset" etc.
Voici mon code
Lire le fichier csv et le renvoyer sous forme de tableau
public function csv_convert($csvfile){ //??
$tab = file($csvfile);
if(file_exists($csvfile)){
foreach ($tab as $i => $value) {
preg_match('/(.*);(.*);(.*);(.*)/', $value, $result);
$tab[$i] = new Dog($result[1],$result[2],$result[3],substr($result[4],1,-1));
}
}
return $tab;
}
Insert dans la Db
public function insert(){
$ad = new Admin();
$file = CONF . 'dog.csv';
$tab = $ad->csv_convert($file);
$query = '';
foreach ($tab as $i => $value) {
$query = 'INSERT INTO dogs (mail) VALUES ('. $this->_db->quote($value) .')';
}
$this->_db->prepare($query)->execute();
}
1 réponse
-
Bonjour,
Pourquoi ne pas commencer par :
https://www.php.net/manual/fr/function.fgetcsv.php
puis également :
https://forums.commentcamarche.net/forum/affich-37636387-php-notice-undefined-index
-
Je ne connaisais pas fgetcsv, on m'a dit que je pouvais le faire avec preg_match mais je ne connais pas la syntax pour faire l'insert dans la db
- La "syntaxe" pour faire l'insertion en bdd
En sql :INSERT INTO table (nom_colonne_1, nom_colonne_2, ... VALUES ('valeur 1', 'valeur 2', ...)
Dans du code php (en pdo par exemple)
$query = "INSERT INTO table (nom_colonne_1, nom_colonne_2) VALUES (:valeur1, :valeur2)"; $datas = array(':valeur1'=>$valeur1,':valeur2'=>"qqchose d'autre"); try{ $prepare = $this->_db->prepare($query); $prepare->execute($datas ); }catch(Exception $e){ echo "Erreur : " .$e->getMessage(); }
-