Export mysql vers csv via php pdo

Eléphanteau du PHP | 27 Messages

14 déc. 2014, 19:31

Bonsoir,

J'essaye de faire un export de données MySQL vers un fichier csv en php pdo.

Cela fonctionne mais il m'affiche deux fois chaque donnée.

Exemple d'une ligne :

titre1, titre1, editeur1,editeur1 au lieur de titre1, editeur1
<?php

$sth = $bdd->prepare("select 
titre AS titre_livre, editeur AS editeur_livre  from livres");
$sth->execute();

/* Récupération de toutes les lignes d'un jeu de résultats */
print("Récupération de toutes les lignes d'un jeu de résultats :\n");
$list = $sth->fetchAll();
print_r($list);
$fp = fopen("export/export.csv", "w");

foreach($list as $fields):
    fputcsv($fp, $fields);
endforeach;
fclose($fp);
?>
Qu'en pensez-vous?

Merci d'avance pour votre aide,

;-)
Sub

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 déc. 2014, 01:50

salut,


a priori je dirais que tu n'as pas modifier le comportement par défaut du fetch de PDO : PDO::FETCH_BOTH
en clair tu as un tableau indexé numériquement et par les noms des colonnes pour chaque colonnes de ta requête.
Le comportement que tu indique est donc normal ;)

Pour ce que tu souhaite faire PDO::FETCH_NUM devrait suffire.
la doc qui va bien : http://php.net/manual/fr/pdostatement.fetch.php

Tu peux fixer ce comportement avec la méthode setFetchMode de l'objet PDOStatement.
Où à la connexion avec PDO::setAttribute ;)

@+
Il en faut peu pour être heureux ......