Insert data d'un fichier csv en db

Fermé
helloword95 - 1 mai 2017 à 10:50
jordane45 Messages postés 38197 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 mai 2024 - 1 mai 2017 à 15:00
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

	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();
	}








A voir également:

1 réponse

jordane45 Messages postés 38197 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 mai 2024 4 675
1 mai 2017 à 13:32
0
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
0
jordane45 Messages postés 38197 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 mai 2024 4 675 > helloword95
Modifié le 1 mai 2017 à 15:01
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();
}
0