Insert data d'un fichier csv en db

helloword95 -  
jordane45 Messages postés 38486 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

	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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
0
helloword95
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753 > helloword95
 
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