2009-10-05 3 views
8

У меня возникли проблемы с получением моих данных из fetchAll для выборочной печати.PDO looping throug and printing fetchAll

В обычном MySQL я сделать это таким образом:

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

В PDO, у меня возникают проблемы. Я связала Params, то я спасая неправдоподобные данные в $ RS, как выше, с целью перекручивание через него так же ..

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

Теперь приходит неприятности часть. Что я делаю PDO-мудрый, чтобы получить что-то, соответствующее циклу while выше? Я знаю, что могу использовать print_r() или dump_var, но это не то, что я хочу. Мне нужно делать то, что я использовал, чтобы иметь возможность делать с обычным mysql, например, захватывать $ id, $ n, $ k индивидуально по мере необходимости. Является ли это возможным?

Заранее спасибо ..

ответ

26

Это должно быть

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

Если вы настаиваете на fetchAll, то

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

PDO::FETCH_ASSOC извлекает только имена столбцов и опускает числовой индекс.

+0

большое спасибо за помощь. Я пошел с 2, потому что я должен считать это слишком перед циклом. Поэтому имеет смысл хранить его в $ results раньше. – Chris

+2

$ query-> rowCount() _might_ возвращает счетчик. – Zed

+2

Это не относится к операторам SELECT. См. Этот вопрос: http://stackoverflow.com/questions/460010/work-around-for-php5s-pdo-rowcount-mysql-issue/660032#660032 – Imran

Смежные вопросы