Comment importer un fichier CSV dans MySQL avec PHP

Dans ce tutoriel, nous allons voir comment importer un fichier csv dans une base de données MySQL à l’aide de PHP. CSV signifie « Comma Separated Values » et contient toutes les données séparées par des virgules.
 
 
Nous allons utiliser trois fichiers:

  • Le fichier index.php qui contiendra une partie de l’interface utilisateur.
  • Le fichier import_csv.php pour connecter MySQL et analyser les données CSV et les stocker dans une table MySQL.
  • Le fichier db_connect.php pour se connecter à la base de donnée.
Créez une base de données

Créez une base de données MySQL nommée ‘test’ par exemple. Si vous avez déjà une base de données de test, exécutez le code ci-dessous dans la fenêtre de requête SQL de la base de données. Comme illustré dans l’image ci-dessous :

CREATE TABLE IF NOT EXISTS `produit` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(256) NOT NULL,
`description` text NOT NULL,
`price` int(255) NOT NULL,
primary key (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


 
 

Connexion à la base de données MySQL avec PHP

Après avoir créé la table « produit », nous allons créer le fichier db_connect.php pour établir une connexion avec la base de données MySQL.

<?php
	$server = "localhost";
	$username = "root";
	$password = "";
	$db = "test";
	$conn = mysqli_connect($server, $username, $password, $db);
?>

 

Étapes pour importer un fichier CSV dans une base de données MySql à l’aide de PHP

Étape 1: Créez le fichier import_csv.php et ajoutez le code ci-dessous dans ce fichier.

<?php
	// Connect to database
	include("db_connect.php");

	if (isset($_POST["import"])) {
		
		$fileName = $_FILES["file"]["tmp_name"];
		
		if ($_FILES["file"]["size"] > 0) {
			
			$file = fopen($fileName, "r");
			
			while (($column = fgetcsv($file, 10000, ",")) !== FALSE) {
				$sql = "INSERT into produit (id,name,description,price)
					   values ('" . $column[0] . "','" . $column[1] . "','" . $column[2] . "','" . $column[3] . "')";
				$result = mysqli_query($conn, $sql);
				
				if (! empty($result)) {
					$type = "success";
					$message = "Les Données sont importées dans la base de données";
				} else {
					$type = "error";
					$message = "Problème lors de l'importation de données CSV";
				}
			}
		}
	}
	//Retourner à la page index.php
	header('Location: index.php');
	exit;
?>

 
 
Le code ci-dessous est utilisé pour créer une interface permettant de télécharger un fichier CSV.

Étape 2: Créez un nouveau fichier index.php pour afficher le formulaire de téléchargement du fichier CSV. Vous devez ajouter le code ci-dessous dans le fichier index.php.

<!DOCTYPE html>
<html>

<head>
	<title>Comment importer un fichier CSV dans MySQL avec PHP</title>
</head>

<body>
    <h3>Lire l'article sur : <a href="https://waytolearnx.com/2019/07/comment-importer-un-fichier-csv-dans-mysql-avec-php.html" target="_blank">Comment importer un fichier CSV dans MySQL avec PHP</a></h3>

    <form enctype="multipart/form-data" action="import_csv.php" method="post">
        <div class="input-row">
            <label class="col-md-4 control-label">Choisir un fichier CSV</label>
            <input type="file" name="file" id="file" accept=".csv">
            <br />
            <br />
            <button type="submit" id="submit" name="import" class="btn-submit">Import</button>
            <br />
        </div>
    </form>

    <?php
			// Connect to database
			include("db_connect.php");

            $sql = "SELECT * FROM produit";
            $result = mysqli_query($conn, $sql);

            if (mysqli_num_rows($result) > 0) {
    ?>
        <table>
            <thead>
                <tr>
                    <th>Product ID</th>
                    <th>Product Name</th>
                    <th>Description</th>
                    <th>Price</th>
                </tr>
            </thead>
            <?php while ($row = mysqli_fetch_array($result)) { ?>
                <tbody>
                    <tr>
                        <td> <?php  echo $row['id']; ?> </td>
                        <td> <?php  echo $row['name']; ?> </td>
                        <td> <?php  echo $row['description']; ?> </td>
                        <td> <?php  echo $row['price']; ?> </td>
                    </tr>
            <?php } ?>
                </tbody>
        </table>
        <?php } ?>
</body>
</html>
Télécharger le code source en cliquant ici.
QCM sur PHP

10 réflexions sur “Comment importer un fichier CSV dans MySQL avec PHP

  • août 1, 2020 à 10:33 pm
    Permalien

    Bonjour.
    Et merci beaucoup pour la solution
    Grâce à vous je réussi a importé le fichier csv dans la base des données.

    Maintenant comment mettre à jour ma base de données toujours en important un fichier csv ???

    Répondre
    • septembre 5, 2021 à 11:00 am
      Permalien

      Bonjour Moise,
      Utiliser UPDATE à la place de INSERT si tu veux mettre à jour ta base de données.

      Répondre
  • septembre 5, 2021 à 9:54 am
    Permalien

    bonjour

    j’ai essaye ton code ( apres avoir corrige un ou deux bugs ) mais rien ne se passe

    du coup j’ai mis quelques echos pour avoir des retours et la non plus rien du tout

    quand je regarde la console tout le code phph apparait comme si il n’etait pas reconnu

    je suis perdu

    tu peux m’aider ?

    Répondre
    • septembre 5, 2021 à 11:02 am
      Permalien

      C’est bizarre de mon coté, je n’ai aucun bug, quelle version PHP as tu?

      Répondre
  • septembre 5, 2021 à 11:32 am
    Permalien

    salut

    j’ai essaye ton code mais c marche pas rien ne se passe

    j’ai essaye de mettre des echos pour avoir un retour mais meme la j’ai rien

    tu px m’aider ?

    Répondre
  • septembre 5, 2021 à 5:20 pm
    Permalien

    j’ai up mon easyphp je suis en php 5.2.8 mais idem quand je lance le script rien ne se passe ( je reviens juste sur la page de depart , aucun messages d’erreur et aucun retour des echos

    Répondre
  • juillet 3, 2022 à 9:31 am
    Permalien

    Bonjour
    Votre code est parfait, juste il y a un problème lorsqu’on ajoute des mots en caractères spéciaux (exemple Agrégé le résultat s’inscrit sur la BBD : Agr?g?)

    Répondre
    • juillet 3, 2022 à 3:26 pm
      Permalien

      Lorsque vous créer la base de donnée, n’oublier pas d’ajouter DEFAULT CHARSET=utf8; à la fin comme montré dans le code ci-dessus.

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *