在动态更新页面上包含HTML的更好方法:php include()或MySQL数据库?

时间:2016-01-09 19:47:34

标签: php

我有<table>根据通过$_GET变量获得的用户选择来更新数据。以下两个选项中的哪一个是将数据加载到<table>

的更好方法

1。)php include()就像......

<?php
$problem_id = (int)$_GET['problem_id'];
$table .= '<table>';
include('path/to/file/' . $problem_id . '.php'); //$problem_id.php would contain the <tr>'s and <td>'s that go in the <table>.
$table.= '</table>';

echo $table;
?>

2。)使用MySQL数据库就像......

<?php
$problem_id = (int)$_GET['problem_id'];

/*
 Go to DB and get the entry which contains <tr>'s and <td>'s that
 go in the <table> and put it into the variable $table_content.
*/

$table = '<table>' . $table_content . '</table>';

echo $table;
?>

这里有明显的选择吗?两种方法的优点/缺点?

感谢。

5 个答案:

答案 0 :(得分:3)

根据我的经验,文件包含会更快,但您必须测试您的系统才能确定。以下是对同一主题的全面讨论:

What's quicker; including another file or querying a MySQL database in PHP?

答案 1 :(得分:0)

我想说这主要取决于文本的大小,以及你将拥有多少文本。

  • 如果您要拥有数十个(或数百个,甚至数千个)包含大量内容的大型复杂页面,那么include()就可以了。您可以直接在文件系统上编辑它们。

  • 如果您将拥有数千个(或更多)更简单的页面,那么使用数据库可能会更有效。如果你想索引和搜索它们,这将是一个好主意。

作为一个相当随意的阈值,每个文件将占用最少4 kB,因此如果它们的内容少于那个,则可能会浪费它们的空间。

在这两种情况下,您都希望将滥用保护措施用于创建大量内容的人员。

  • 基于文件系统可能容易让我发送problem_id=../../../passwords.php形式的查询,以及如果人们自己可能产生问题就让你的文件系统被吃掉。
  • 基于数据库可能容易受到SQL注入等攻击,但现有的解决方案可能存在更多问题。

最后,存在作为数据库实现的文件系统,以及作为文件系统实现的数据库。他们并没有那么不同;它们只针对不同的东西进行了优化。

答案 2 :(得分:0)

您必须做出决定取决于每个选项goodbad

数据库选项

好的一面 - 如果您使用版本控制(EG git),则必须能够administrators修改html模板admin panel那么最好的选择是数据库,因为如果文件存储,则通过admin panelgit在服务器上修改文件同时,您将在服务器更新期间发生冲突

错误的一面 - 1)您必须执行更多操作才能从数据库中获取并显示文件大小写。 2)由于您的模板存储在db中,您将在数据库上有额外的负载,如果您有性能优化问题,以后必须实现文件缓存

文件选项

好的一面 - 1)开发人员可以轻松修改IDE editors (E.G. eclipse)上的html模板,然后在db或admin面板中修改它。 2)文件包含匹配更快,代码中的操作更少,然后数据库(通常情况下,如果您没有特定情况)。 3)您不需要实现已存储在文件中的文件缓存

坏的方面 - 1)如上所述,如果您同时修改gitadmin中的模板,则会遇到git的问题/ p>

答案 3 :(得分:0)

如果是动态内容,那么你最好的选择是HTML5 + jQuery-Ajax + PHP + Db的组合。

在您的html页面中,您可以使用以下代码:

<table>
    <!-- table head -->
    <thead>
        <tr>
            <th>Col #1</th>
            <th>Col #2</th>
            <th>Col #3</th>
        </tr>
    </thead>
    <!-- result set -->
    <tbody id="results">
    </tbody>
</table>

您可以使用&#34; Jquery-Ajax&#34;异步询问服务器数据。并填充空表(本例中为#results)。这个应用程序是一个文件&#34; PHP&#34;连接到数据库(可以是任何数据库引擎或MySQL数据库)。

答案 4 :(得分:-1)

MySQL对我来说是显而易见的选择。动态包含大量PHP文档会使服务器混乱。问题是你真的想要输入或生成新的表格数据吗?您可以将其全部动态创建,然后插入到数据库中。