Mysqli 检索数据并显示它们 - 最佳方式
Mysqli Retrieve data and display them - best way
下面哪个选项更好
选项 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 个循环。一个获取数据,另一个显示数据。但是哪个更好用呢?
谢谢
视图只处理表示问题总是最好的。
因此,在您提到的两个选项之间,我会选择选项 1,这样您就不必在视图内关闭 $smpt($smpt 与表示层无关)。
选项 1 允许您重新使用 $data
变量,这样您就可以显示两次结果,但是这样做的代价是您可能有一个很大的存储在变量中的数据量。您可以在 100% 确定已完成后使用 unset($data)
清除它。
选项 2 需要更少的循环(只有一个而不是两个)并且不需要额外的变量来存储数据。这样做的代价是 while
循环只能使用一次。
在宏伟的计划中,速度差异将非常小,用户不会注意到它们,但是如果一次脚本中有 20 多个这样的实例,那么它可能会产生明显的影响。
我会推荐选项 2,前提是您只需要使用 while
循环一次。此外,您还可以 benchmark your scripts 看看他们之间的表现如何。
下面哪个选项更好
选项 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 个循环。一个获取数据,另一个显示数据。但是哪个更好用呢?
谢谢
视图只处理表示问题总是最好的。
因此,在您提到的两个选项之间,我会选择选项 1,这样您就不必在视图内关闭 $smpt($smpt 与表示层无关)。
选项 1 允许您重新使用 $data
变量,这样您就可以显示两次结果,但是这样做的代价是您可能有一个很大的存储在变量中的数据量。您可以在 100% 确定已完成后使用 unset($data)
清除它。
选项 2 需要更少的循环(只有一个而不是两个)并且不需要额外的变量来存储数据。这样做的代价是 while
循环只能使用一次。
在宏伟的计划中,速度差异将非常小,用户不会注意到它们,但是如果一次脚本中有 20 多个这样的实例,那么它可能会产生明显的影响。
我会推荐选项 2,前提是您只需要使用 while
循环一次。此外,您还可以 benchmark your scripts 看看他们之间的表现如何。