繁体   English   中英

使用php来填充 <select>在网页上。寻找更快的加载时间

[英]Using php to fill a <select> on webpage. Looking for a faster load time

我补充说:

<select>
    <option value=""></option>
    <?php include 'connect/config.php'; ?>
    <?php include 'connect/opendb.php'; ?>

    <?php
        $query = $db->query('SELECT type FROM card_type'); 
        $rows = $query->fetchAll(); 
        foreach($rows as $row) { 
        print '<option value="'.$row['type'].'">'.$row['type'].'</option>';
        }
    ?>
    <?php $db =null ?>
</select>

到我的页面,现在加载页面需要大约5秒钟。

是否有更有效的方法从数据库填充选项框?

这些是您的代码中影响性能的一些问题:

  1. 您不应该为表格的每一行调用print 这会影响性能(如果服务器没有缓存输出),因为每次调用print你都会在网上发送字节,这是一项代价高昂的操作, 对于一大块数据而言,最好是一次,而不是小块的多次数据 ,这就是Web服务器在将其发送到浏览器之前经常缓存所有PHP输出的原因。

  2. 在使用foreach遍历数组时,应该通过引用传递数组值 ,以避免在循环的每次迭代中复制变量。

  3. 用逗号回声,而不是句号 如果使用句点,PHP必须在输出之前连接字符串。 如果你使用逗号,它只是按顺序输出它们而不需要额外的处理。

  4. 你应该使用echo而不是print() 作为语言结构而不是函数,echo比print()具有轻微的性能优势。

因此,这是您的代码,上面的第2,3和4点已得到纠正,因此假设您的Web服务器正在缓存输出:

<?php
      $query = $db->query('SELECT type FROM card_type'); 
      $rows = $query->fetchAll(); 
      foreach($rows as &$row) { 
          echo '<option value="', $row['type'] ,'">' ,$row['type'] , '</option>';
      }
?>

这是您的代码,上面的第1点和第2点已更正,因此假设您的Web服务器没有缓存输出:

<?php
      $query = $db->query('SELECT type FROM card_type'); 
      $rows = $query->fetchAll(); 
      $out = '';
      foreach($rows as &$row) { 
          $out .= '<option value="'.$row['type'].'">'.$row['type'].'</option>';
      }
      echo $out;
?>

现在,您将整个数据库表放入php数组中。 如果您的表很大,这可能会导致响应延迟。

请尝试使用此选项,对于填充<select>

<?php
    $query = $db->query('SELECT type FROM card_type'); 
    while($row = $query->fetch_array()) { 
        print '<option value="'.$row['type'].'">'.$row['type'].'</option>';
    }
?>

试试这个......

<select>
  <option value=""></option>  
        <?php 
    include 'connect/config.php';
    include 'connect/opendb.php';
    $query = $db->query('SELECT type FROM card_type'); 
    $rows = $query->fetchAll(); 
    $select_option = '';
    foreach($rows as $row) { 
      $select_option .= '<option value="'.$row['type'].'">'.$row['type'].'</option>';
    }
    echo $select_option;
    unset($db);
    ?>
</select>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM