2009-10-05 6 views
8

Je rencontre des problèmes pour extraire mes données de fetchAll pour les imprimer de manière sélective.Lecture en boucle de PDO et impression de fetchAll

dans une base MySQL normale je le fais de cette façon:

$rs = mysql_query($sql); 
while ($row = mysql_fetch_array($rs)){ 
    $id = $row['id']; 
    $n = $row['n']; 
    $k = $row['k']; 
} 

En AOP, je vais avoir du mal. Je lié les params, alors j'enregistrer les données récupérées dans rs $ comme ci-dessus, dans le but de boucle à travers la même façon ..

$sth->execute(); 
$rs = $query->fetchAll(); 

Maintenant vient la partie de la difficulté. Que dois-je faire en PDO pour obtenir quelque chose correspondant à la boucle while ci-dessus ?! Je sais que je peux utiliser print_r() ou dump_var, mais ce n'est pas ce que je veux. J'ai besoin de faire ce que j'avais l'habitude de faire avec mysql, comme saisir $ id, $ n, $ k individuellement comme nécessaire. C'est possible?

Merci à l'avance ..

Répondre

26

Il devrait être

while ($row = $query->fetch(PDO::FETCH_ASSOC)) { 
    $id = $row['id']; 
    $n = $row['n']; 
    $k = $row['k']; 
} 

Si vous insistez sur fetchAll, puis

$results = $query->fetchAll(PDO::FETCH_ASSOC); 
foreach($results as $row) { 
    $id = $row['id']; 
    $n = $row['n']; 
    $k = $row['k']; 
} 

PDO::FETCH_ASSOC ne récupèrera que les noms de colonnes et omettra l'index numérique.

+0

merci beaucoup pour votre aide. Je suis allé avec 2, parce que je dois le compter aussi avant de boucler. Il est donc plus logique de le stocker dans $ results avant. – Chris

+2

$ query-> rowCount() _might_ retourne le nombre. – Zed

+2

Il ne sera pas pour les instructions SELECT. Voir cette question: http://stackoverflow.com/questions/460010/work-around-for-php5s-pdo-rowcount-mysql-issue/660032#660032 – Imran