Maison >développement back-end >tutoriel php >Comment puis-je générer et télécharger des fichiers CSV à partir d'une base de données MySQL à l'aide de PHP ?

Comment puis-je générer et télécharger des fichiers CSV à partir d'une base de données MySQL à l'aide de PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-14 07:13:23432parcourir

How Can I Generate and Download CSV Files from a MySQL Database Using PHP?

Génération de fichiers CSV pour les utilisateurs en PHP

Les utilisateurs demandent souvent des extraits de données au format CSV. Cet article approfondit le processus de création de fichiers CSV à la demande et de leur fourniture aux utilisateurs via un lien téléchargeable.

Solution :

Pour créer et télécharger un fichier CSV contenant données d'une base de données MySQL lorsqu'un utilisateur clique sur un lien :

  1. Générer le CSV Données :

    • Effectuez la requête MySQL pour récupérer les données souhaitées.
    • Organisez les données dans un tableau de tableaux, chaque ligne représentant un enregistrement.
  2. Créer le CSV En-tête :

    • Utilisez la fonction header() pour définir le type de contenu sur text/csv et spécifiez le nom de fichier souhaité comme disposition du contenu. Ce paramètre spécifie le nom du fichier et déclenche l'invite de téléchargement.
  3. Définir une fonction de sortie CSV :

    • Créer une fonction nommé outputCSV() qui accepte un tableau d'enregistrements comme argument.
    • Dans la fonction, ouvrez un flux pour écrire dans le sortie en utilisant fopen("php://output", "wb").
    • Parcourez le tableau d'enregistrements et écrivez chaque ligne dans le flux de sortie en utilisant fputcsv($output, $row). Cette fonction gère automatiquement les délimiteurs et les clôtures.
    • Fermez le flux de sortie à l'aide de fclose($output).
  4. Appelez la fonction de sortie CSV :

    • Passez le tableau d'enregistrements à la sortieCSV() fonction.
    • Le fichier CSV sera automatiquement généré et envoyé au client pour téléchargement.

Exemple de code :

header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=file.csv");

function outputCSV($data) {
  $output = fopen("php://output", "wb");
  foreach ($data as $row)
    fputcsv($output, $row); // here you can change delimiter/enclosure
  fclose($output);
}

outputCSV(array(
  array("name 1", "age 1", "city 1"),
  array("name 2", "age 2", "city 2"),
  array("name 3", "age 3", "city 3")
));

Points clés :

  • La pseudo-variable php://output ouvre un flux qui est automatiquement écrit dans la sortie HTTP buffer.
  • fputcsv() écrit une ligne de données CSV dans le flux, en gérant les paramètres de délimiteur et de boîtier.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn