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



我有一个<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;
?>

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

谢谢。

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

什么';s更快;包括另一个文件或在PHP中查询MySQL数据库?

我想说,这主要取决于文本的大小和数量。

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

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

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

在这两种情况下,你都希望为创建大量内容的人提供虐待保护。

  • 基于文件系统的系统可能很容易受到我发送形式为problem_id=../../../passwords.php的查询的攻击,如果人们自己也会产生问题,那么您的文件系统也可能会被吃掉
  • 基于数据库的数据库可能容易受到SQL注入等的攻击,但可能还有更多现有的解决方案

最终,有一些文件系统被实现为数据库,还有一些数据库被实现为文件系统。它们其实并没有什么不同;它们只是针对不同的事情进行了优化。

您必须根据的每个选项goodbad做出决定

数据库选项

好的一面——如果您使用版本控制(例如git),并且您必须让administrators能够从admin panel修改html模板,那么您的最佳选择是DB,因为在文件存储的情况下,如果文件同时通过admin panelgit在服务器上修改,那么在服务器更新时会发生冲突

坏边--1)您必须执行更多操作才能从数据库中获取它并显示在文件情况下。2)由于您的模板存储在数据库中,您将在数据库上有额外的负载,稍后如果您有性能优化问题,您将不得不实现文件缓存

文件选项

好的一面--1)开发人员可以很容易地修改IDE editors (E.G. eclipse)上的html模板,然后在数据库或管理面板中进行修改。2)文件include的匹配速度比DB更快,并且在代码中需要更少的操作(通常如果您没有特定的情况)。3)您不需要实现文件缓存,因为它已经存储在文件中

坏边-1)如上所述,如果您同时修改admingit中的模板,则

将出现git问题

如果是动态内容,您的最佳选择是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>

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

MySQL对我来说是显而易见的选择。动态包含一堆PHP文档会让你的服务器变得一团糟。问题是,你真的想键入或生成新的表数据吗?您可以将其全部动态创建,然后插入到数据库中。

最新更新