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 шт):
тут зависит от количества данных в массиве. Если немного, то можно получить разом и с ним работать. Оба варианта легитивны, всё зависит от обстоятельств. В данном случае думаю. что оба подойдут. Но вопрос интересный)
А принципиальная разница в том, сколько раз вы будете обращаться к хранилищу данных, Тут палка о двух концах, можно один раз загрузить и работать с этим, а можно получать актуальную информацию на каждый чих.
Всё очень сильно зависит от обстоятельств. Транзакции и прочее.