Mysqli Получить данные и отобразить их - лучший способ

Какой из вариантов ниже лучше

Опция 1:

//control file:  
$smpt = $con->query("SELECT id,name FROM customers");
//fetch all resuts 
$results = array();
while ($row = $result->fetch_assoc()) {
  $results[] = $row;
}    
$smpt->close();
//Note: PHP version < 5.3.0 so I can't use just $results->fetch_all('MYSQLI_ASSOC');

//view file:
foreach($results as $key=>$value) {
//display results
}
unset($results);

Вариант 2:

//control file:  
$smpt = $con->query("SELECT id,name FROM customers");
//fetch all resluts 

//view file:
while($row = $result->fetch_assoc()) {
//display results
}
$smpt->close();

Я пытаюсь полностью отделить логику от представления... В настоящее время я использую вариант 2, потому что с вариантом 1 сценарий проходит 2 цикла. один для получения данных, а другой для их отображения. Но какой из них лучше использовать?

Спасибо

2 ответа

Решение

Вариант 1 позволяет повторно использовать $data переменной, так что вы можете отобразить результаты дважды, но цена этого заключается в том, что у вас может быть большой объем данных, хранящихся в переменной. Вы можете очистить это с помощью unset($data) как только вы на 100% уверены, что закончили с этим.

Вариант 2 требует меньше циклов (только один вместо двух) и не требует дополнительной переменной для хранения данных. Стоимость этого в том, что while цикл может быть использован только один раз.

В общей схеме, различия в скорости будут настолько минимальными, что пользователь не заметит их, однако, если в одном скрипте будет более 20 экземпляров, это может оказать заметное влияние.

Я бы порекомендовал вариант 2 при условии, что вам нужно только использовать while цикл один раз. Кроме того, вы можете сравнить свои сценарии, чтобы увидеть, как они работают друг против друга.

Всегда лучше, чтобы взгляды касались только проблем с презентацией.

Таким образом, из двух упомянутых вами вариантов я бы выбрал вариант 1, чтобы вам не приходилось закрывать $smpt внутри представления ($smpt не имеет ничего общего с уровнем представления).

Другие вопросы по тегам