Bonjour à tous !

Je n'arrive pas à comprendre pourquoi ma requette m'envoie le résultat en double dans mon fichier CSV, mais je dois être fatigué

Voici la bestiole :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
// on cree le fichier d'output
$output = fopen('php://output', 'w', ';');
 
// on attaque la première ligne pour faire les colonnes
fputcsv($output, array('ID', 'reference', 'ID_Customer', 'ID_SEPA', 'VALIDE', 'Date', 'Client', 'Mail', 'payment', 'Facture', 'Statut', 'Total HT', 'Port HT', 'COMMISSION'));
 
//on choppe les données SQL en faisant un petit calcul au passage
$requete = $bdd->query("SELECT SQL_CALC_FOUND_ROWS
            a.id_order AS ID, reference, c.id_customer AS ID_Customer, sepa.id_sepa AS ID_SEPA , sepa.etat AS VALIDE ,a.date_add AS Date, CONCAT(c.firstname, '  ', c.lastname) AS Client, c.email AS Mail, payment, a.invoice_number AS Facture, osl.name AS Statut, REPLACE(total_paid_tax_excl, '.', ',') AS Total_HT, REPLACE(total_shipping_tax_excl, '.', ',') AS Port_HT, REPLACE(0.15*(total_paid_tax_excl - total_shipping_tax_excl), '.', ',') AS COMMISSION  
            FROM ps_orders a 
                        LEFT JOIN ps_customer c ON (c.id_customer = a.id_customer) 
                LEFT JOIN ps_order_state os ON (os.id_order_state = a.current_state) 
                LEFT JOIN ps_order_state_lang osl ON (os.id_order_state = osl.id_order_state AND osl.id_lang = 1) 
                LEFT JOIN ps_prelevementsepa sepa ON (sepa.id_customer = a.id_customer) 
                LEFT JOIN ps_portfolio_customer_employee com ON (c.id_customer = com.id_customer) 
                LEFT JOIN ps_employee emp ON (emp.id_employee = com.id_employee)
                LEFT JOIN ps_shop shop ON a.id_shop = shop.id_shop 
                WHERE 1 AND a.id_shop IN (2) AND a.date_add > '2021/01/01' AND com.id_employee = '$comm'
        ORDER BY a.id_order asc");
 
// et on boucle le tout pour le sortir dans le fichier CSV
 
while ($donnees = $requete->fetch())
{
        fputcsv($output, $donnees);
}
$requete->closeCursor(); // Termine le traitement de la requête
Mon problème, c'est que ma première ligne est bonne (avec les headers de chaque colonne) mais ensuite, il me met tout en double : ID,ID, reference, reference, etc etc...

J'ai foiré mon truc à quel endroit ?
(pour info, j'ai simplement transformé un vieux fichier qui utilisait des mysqli_ pour le moderniser en PDO)

Merci d'avance pour vos yeux de lynx.

Manu