2009-10-05 12 views
8

Sto riscontrando problemi nel ricevere i dati da fetchAll per la stampa in modo selettivo.PDO looping throug e stampa fetchTutti

in MySQL normale, lo faccio in questo modo:

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

In DOP, sto avendo problemi. Ho legato i params, allora io sto salvando i dati recuperati in $ rs come sopra, con lo scopo di loop attraverso di essa allo stesso modo ..

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

Ora viene la parte guai. Cosa devo fare in modo PDO per ottenere qualcosa che corrisponda al ciclo while sopra ?! So che posso usare print_r() o dump_var, ma non è quello che voglio. Ho bisogno di fare ciò che ero abituato a fare con il normale mysql, come afferrare $ id, $ n, $ k individualmente, se necessario. È possibile?

Grazie in anticipo ..

risposta

26

Va

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

Se ti ostini a fetchAll, quindi

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

PDO::FETCH_ASSOC recupera solo i nomi delle colonne e omette l'indice numerico.

+0

grazie mille per il vostro aiuto. Sono andato con 2, perché devo contarlo anche prima del ciclo. Quindi ha più senso archiviarlo in $ risultati prima. – Chris

+2

$ query-> rowCount() _might_ restituisce il conteggio. – Zed

+2

Non sarà per le istruzioni SELECT. Vedi questa domanda: http://stackoverflow.com/questions/460010/work-around-for-php5s-pdo-rowcount-mysql-issue/660032#660032 – Imran