8
votes

Requête MySQL et les données d'exportation comme CSV en PHP

J'ai MySSQL DB avec des tables différentes. Les données entre les tables sont liées et je récupère et les affichent à l'aide de l'ID utilisateur. J'ai utilisé la référence de PHP MySQLI affichant toutes les tables d'une base de données

Mais comment puis-je exporter ces informations sous forme de fichier CSV? J'ai essayé au lieu d'echo l'a changé à une chaîne et imprimez la chaîne à un fichier CSV, mais cela ne fonctionne pas.

J'ai aussi essayé l'exemple de: http://sudobash.net/php-export-mysql-query -O-CSV-File /

Mais je peux voir les données, mais sur le dessus, il y a aussi de la jonque (comme " <>

"

etc) dans le fichier CSV.

Y a-t-il une autre façon de faire cela?


0 commentaires

5 Réponses :


15
votes

Si vous souhaitez écrire chaque ligne MySQL à un fichier CSV, vous pouvez utiliser la fonction PHP5 intégrée fpPsv code> xxx pré>

qui devrait renvoyer une chaîne séparée par des virgules Pour chaque ligne écrite à file.csv code>: p>

row1 val1, row1 val2
row2 val1, row2 val2 
etc..


3 commentaires

@ DCD08 Merci, j'aurais essayé cela, mais le problème est au bas du fichier CSV, il y a aussi des junk imprimés comme "

"Et etc." toute idée de ce qui le causent?


Ok fait, je dois mettre ob_start () en haut et ceci est résolu.


Quelqu'un peut-il afficher un exemple / lien sur la manière de faire face à la requête de la zone de recherche aux côtés de l'exportation CSV / XLS? Je souhaite utiliser la zone de recherche en tant que requête et $ _GET ["Recherche"] variable, puis récupérer des données de MySQL, affichez dans la table puis exporter sur XLS / CSV. Pour autant que je sache, il devrait y avoir une entrée de boîte de recherche et deux boutons Soumettre ...



4
votes

Vous pouvez essayer d'utiliser mysql dans Outfile Clause:

SELECT *
  INTO OUTFILE '/tmp/tablename.csv'
       FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
       LINES TERMINATED BY '\n'
   FROM tablename
  WHERE userid = 1


1 commentaires

Cela n'ajoute pas de noms de colonnes à la première ligne de CSV. Veuillez également suggérer des modifications de la méthode ci-dessus afin qu'elle puisse également exporter les noms de colonnes.



13
votes

Il s'agit d'une solution qui incorpore les en-têtes ou les noms de champ en utilisant MySQLI's fetch_fields fonction - xxx

ceci est aussi une modification d'une réponse différente où une solution similaire a été suggérée, mais les en-têtes ne fonctionnaient pas pour moi, j'ai donc changé la méthode de la récupération. Le crédit est dû à @jrgns


0 commentaires

1
votes

Pour créer et télécharger un fichier CSV à partir d'une requête MySQLI (à l'aide de l'objet orienté orienté), je pense que cela aiderait.

Ceci est une classe qui se connecte à la base de données et les fonctions feront tout ce que vous voulez utiliser MySQLI et PHP. Dans ce cas, appeler cette classe (exiger ou inclure), il suffit d'utiliser la fonction "DownloadCSV ()".

Par exemple, ce serait le fichier "Class.PHP": < Pré> xxx

Après avoir créé le fichier "Class.PHP", dans cet exemple, utilisez cette fonction sur "download.php" fichier: xxx

Après le téléchargement, ouvrez le fichier avec MS Excel.

J'espère que cela vous aidera, je pense que je l'ai bien écrit, je ne me suis pas senti à l'aise avec le champ de texte et de code.


0 commentaires

1
votes

Essayez ceci.

file_put_contents('MyCsvFile.csv', $csvString);


0 commentaires