Données dans tableau après un fetchAll()

Données dans tableau après un fetchAll() - PHP - Programmation

Marsh Posté le 26-09-2017 à 11:40:31    

Bonjour,
 
J'arrive sans peine à récupérer des données après ma requête avec un "fetchAll()" du résultat.
Le tableau par contre me renvoie les données "en doubles":
 
$requete = $connexionStagiaire->query('SELECT id, nom, prenom FROM ma_table');
$result = $requete->fetchAll();
foreach($result as $key) {
$insert[] = implode(', ', array_values($key));
}
var_dump($insert);
 
Avec ceci, les chaines qui me sont renvoyées sont du type:
'id, id, nom, nom, prenom, prenom'
Or vous vous en doutez, je voudrais quelque chose comme ça:
'id, nom, prenom'
 
Comment faire?
Merci!

Reply

Marsh Posté le 26-09-2017 à 11:40:31   

Reply

Marsh Posté le 26-09-2017 à 13:32:48    

Si tu as gardé le mode par défaut, PDO::FETCH_BOTH, c'est normal puisque les données, à l'image de mysql_fetch_array, sont présentes deux fois, indexée une fois par le nom de la colonne et une fois par leur position.
 
Remplacer :

Code :
  1. $result = $requete->fetchAll();


Par :

Code :
  1. $result = $requete->fetchAll(PDO::FETCH_ASSOC);


 
Ou alors pour être systématiquement en PDO::FETCH_ASSOC par défaut, faire un :

Code :
  1. $connexionStagiaire->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);


(ou faire l'équivalent via le 4e paramètre du constructeur de PDO)


Message édité par pluj le 26-09-2017 à 13:35:16
Reply

Marsh Posté le 27-09-2017 à 08:48:17    

Ah super, ça marche nickel avec PDO::FETCH_ASSOC
Pas faute de regarder la doc, mais j'étais passé à côté de ce paramètre.
 
Merci!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed