【问题标题】:Mysqli Retrieve data and display them - best wayMysqli 检索数据并显示它们 - 最好的方法
【发布时间】:2015-07-30 07:51:29
【问题描述】:

以下哪个选项更好

选项 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 个循环。一个用于获取数据,另一个用于显示它们。但是哪个更好用呢?

谢谢

【问题讨论】:

    标签: php mysqli logic presentation fetchall


    【解决方案1】:

    选项 1 允许您重复使用 $data 变量,以便将结果显示两次,但这样做的代价是您可能将大量数据存储在变量中.一旦你 100% 确定你已经完成它,你可以使用 unset($data) 来清除它。

    选项 2 需要更少的循环(只有一个而不是两个),并且不需要额外的变量来存储数据。这样做的代价是while 循环只能使用一次。

    总体而言,速度上的差异非常小,用户不会注意到它们,但是如果在一个脚本中有 20 多个这样的实例,那么它可能会产生明显的影响。

    如果您只需要使用一次 while 循环,我会推荐 选项 2。另外,您可以benchmark your scripts 看看他们的表现如何。

    【讨论】:

      【解决方案2】:

      视图最好只处理表示问题。

      所以在您提到的两个选项之间,我会选择选项 1,这样您就不必在视图中关闭 $smpt($smpt 与表示层无关)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 2016-07-08
        • 1970-01-01
        相关资源
        最近更新 更多