2009-10-05 8 views
8

Mam problemy z pobieraniem moich danych z fetchAll, aby drukować selektywnie.PDO zapętla się i drukuje fetchAll

W normalnym mysql zrobić to w ten sposób:

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

W PDO, mam problemy. I związany params, potem ja zapisywania pobranych danych do $ rs jak wyżej, w celu zapętlenie przez niego w ten sam sposób ..

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

Teraz zaczyna się kłopot. Co robię PDO-mądry, aby uzyskać coś pasującego do pętli while powyżej ?! Wiem, że mogę użyć print_r() lub dump_var, ale nie tego chcę. Muszę zrobić to, co kiedyś mogłem zrobić ze zwykłym mysql, np. Zgarniając $ id, $ n, $ k indywidualnie w razie potrzeby. Czy to możliwe?

góry dzięki ..

Odpowiedz

26

Powinno być

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

Jeśli nalegać na fetchAll, następnie

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

PDO::FETCH_ASSOC pobiera tylko nazwy kolumn i pomija indeks numerycznej.

+0

Dziękuję bardzo za pomoc. Poszedłem z 2, bo muszę to też policzyć przed zapętleniem. Więc lepiej jest przechowywać go w wynikach $ wcześniej. – Chris

+2

$ query-> rowCount() _might_ zwraca liczbę. – Zed

+2

Nie będzie dla instrukcji SELECT. Zobacz to pytanie: http://stackoverflow.com/questions/460010/work-around-for-php5s-pdo-rowcount-mysql-issue/660032#660032 – Imran