Insert data d'un fichier csv en db

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


1 réponse

  1. Modérateur
    1. 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
    2. Modérateur
      @helloword95La "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();
      }