Récupérer valeur - Requête préparée PDO

Eléphant du PHP | 65 Messages

15 avr. 2011, 13:22

Bonjour,

Mon code:
$sql = 'SELECT email FROM inscrits';
$req = $cnx->prepare($sql);
$req->execute();
while($row = $req->fetchAll(PDO::FETCH_ASSOC)) {
  //echo $row['email'].'<br>'; //Erreur
  echo print_r($row).'<br>';
}
Résultat obtenu:
Array ( [0] => Array ( [email] => [email protected] ) [1] => Array ( [email] => [email protected] ) [2] => Array ( [email] => [email protected] ) [3] => Array ( [email] => [email protected] ) ) 1

Je voudrais afficher les valeurs.
Quelle est la bonne syntaxe à la place de ?
echo $row['email'];

Cordialement
J.F.

Mammouth du PHP | 672 Messages

15 avr. 2011, 14:01

Bonjour.

Un seul conseil : RTFM :twisted:
PDOStatement::fetchAll() retourne un tableau contenant toutes les lignes du jeu d'enregistrements. Le tableau représente chaque ligne comme soit un tableau de valeurs des colonnes, soit un objet avec des propriétés correspondant à chaque nom de colonne
donc :
1. Pas besoin de boucle WHILE, $row = $req->fetchAll(PDO::FETCH_ASSOC) te retourne dans $row un tabeau contenant toutes les lignes.
2. Pour afficher tous les emails, par contre, il faudra boucler sur $row, sachant que $row[$i][email] contient l'email de la $i-ème ligne...

Eléphant du PHP | 65 Messages

15 avr. 2011, 14:40

He oui, j'aurais dû le voir que c'était un tableau avec le résultat de print_r().

Merci macgawel.

ViPHP
ViPHP | 5462 Messages

17 avr. 2011, 00:52

d’ailleurs inutile de faire une requete préparer ainsi que de faire un fetchAll
$sql = 'SELECT email FROM inscrits';
$req = $cnx->query($sql);
$req->setFetchMode(PDO::FETCH_ASSOC);

foreach($req as $row)
{
    echo $row['email'], '<br/>';
}