SQL-выборка без fetch или с?

В чем принципиальная разница при получении нескольких строк Между этим примером

1)

$stmt->execute();
    $r = $stmt;

    foreach($r as $row) {
        echo $row['name'];
    }

И этим

2)

    $stmt->execute();
    
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $row['name'];
    }
    ````

Моя задача состоит в том, чтобы в model-классе получить данные выборки (массив), а потом через цикл вставлять его на страницу. Первый вариант позволяет вернуть $r и провести цикл-вывода где угодно, а во втором вначале придется перезаписать строки в новый массив, передать его в класс-вывода и там через цикл опять выводить. Типо такого -

1)

$stmt->execute();
    $r = $stmt;

    return $r;
    // далее через foreach с $r где угодно

    $stmt->execute();

$arr = [];
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $arr['name'] =  $row['name'];
    }
    return $arr; 
   // придется перезаписывать массив, чтобы не получить только одну строку

  // далее в другом методе foreach ($arr as $row)....

Ответы (1 шт):

Автор решения: pegoopik

тут зависит от количества данных в массиве. Если немного, то можно получить разом и с ним работать. Оба варианта легитивны, всё зависит от обстоятельств. В данном случае думаю. что оба подойдут. Но вопрос интересный)

А принципиальная разница в том, сколько раз вы будете обращаться к хранилищу данных, Тут палка о двух концах, можно один раз загрузить и работать с этим, а можно получать актуальную информацию на каждый чих.

Всё очень сильно зависит от обстоятельств. Транзакции и прочее.

→ Ссылка