当前位置: 首页 > 知识库问答 >
问题:

MySQL数据库中的HTML——最佳实践

卢深
2023-03-14

我开始创建一个系统,我(作为目前唯一的用户)将加载一个动态创建的PHP页面,该页面具有

我的问题:对于这种事情,有哪些最佳实践可以遵循?在MySQL中将超文本标记语言保存为TEXT或LONGTEXT?BLOB?也许甚至可以将此数据保存为. txt文件,该文件使用PHPinclude()将其包含到向用户显示的文件中?

我真的不确定解决这类问题的最佳方法,因此也就产生了一连串的问题。我也不太熟悉创建数据库,因此,我不了解它们的优缺点。似乎使用MySQL数据库来实现这一目标是可行的,但我还没有结婚。

注#1:HTML必须完整保留。比如说<代码>

注意#2:我保存的表每次都会随机生成(包括行数/列数)。因此,我需要表中的所有数据,包括所有


共有3个答案

韩英锐
2023-03-14

有人会想出php来正确实现这一点,但这里有一个想法。

  1. 学习数据库是一个单独的练习,不应该与学习其他任何东西混合在一起。不要使用MySQL。如果你想回去重做这个项目,把它作为一个学习练习,在你花了一些时间学习了基础知识之后,继续吧
  2. 您要做的是将表作为单独的表生成。php片段,然后以一个唯一的名称将其保存到磁盘,您可以使用该名称稍后再次查找它(可能是一个日期/时间,可能是一个不断增加的数字,可能是另一种方式)。保存后,您可以将其包括到您的页面以及要包括它的其他页面中。获得这个独特的名字可能是一个挑战,但这是一个不同的问题(如果你环顾四周,可能已经在某个地方找到了答案)
  3. 如果你知道的话。php足够了,剩下的应该是不言自明的。如果你没有,那么现在是学习的好时机。如果您还有其他问题,可以搜索stack overflow或google以获取答案。很有可能,答案就在那里
  4. 由于我确实了解数据库,其他海报可能会就如何存储数据与您进行有趣的讨论。然而,只有当你理解了我们想要谈论的内容后,这种讨论才会对你真正有用。此外,我敢打赌至少有人问过一次

所以试试这个计划,然后回来为未来的读者发布你是如何做到的。快乐编码。

闻人嘉悦
2023-03-14

遵循这条规则:PHP用于格式化;MySQL用于数据。

PHP用于构建HTML。MySQL作为PHP可以构建HTML的数据的持久存储非常有用。

我已经用Apache PHP MySQL构建了几个系统。每个页面都是PHP生成的HTML。我不存储<代码>

我的一些页面执行一个SELECT;许多页面执行十几个或更多。性能很好。我使用PHP子例程来构建

让我们使用蓝色,因为它可能位于某个数据库表中;PHP代码将添加<代码>

柴瀚昂
2023-03-14

MySQL和HTML文件都可以工作。您的选择应该取决于数据的简单程度和存储量。

一些注意事项:

>

  • 速度。HTML文件和include()方法将更快。文件系统是最快、最简单的数据持久化形式。

    水平可扩展性。如果您采用文件系统方法,您或多或少地与该机器上的磁盘相关联。使用单独的数据库引擎,您将来可以选择在网络上的单独集群服务器上运行数据库。

    元数据。您是否需要存储诸如创建时间、哪个用户创建了超文本标记语言、其他用户查看了多少次等内容?如果是这样,您可能只有一个现实的选择——一个“合适的”数据库。这可以是MySQL或非关系型数据库解决方案之一。

    数据消耗。是否向其他用户显示整个表?还是显示它的选定部分?甚至可能对不同的用户使用不同的部件?这会影响您存储数据的方式—将整个表作为一个实体,或将每行作为一个实体,或每个单元格。

    文本还是长文本?当然,只有在使用SQL时才适用。回答这个问题的唯一方法是知道每个“HTML片段”需要存储多少字节。请注意,字符编码也会影响存储的字节数。请参阅:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT最大存储大小

    还要注意,在MySQL中,每个文本/长文本也可能导致对磁盘的I/O。

    关于关注点:

    HTML必须完整保留。

    只要您在任何时候都不转义HTML,就应该可以了。乍一看,这违反了安全最佳实践,但仔细想想,“不转义HTML”正是您想要做的。转义HTML输出的做法只会帮助消除被解析为HTML标记的HTML语法(潜在的恶意),但在您的情况下,您根本不希望消除HTML语法-您故意想要<代码>

    只需注意:虽然您没有对输出进行HTML转义,但仍然应该过滤输入。本质上,这意味着:在写入DB之前,检查用户输入是否确实是HTML。为了增强应用程序的安全性,明智的做法是为这些html" target="_blank">表单元格中可以存储的内容定义规则-可能没有<代码>

  •  类似资料:
    • 目前需求就是将mysql的表结构及数据迁移到pgsql. 我用的方案是使用navicate 同步数据及结构到pg, 有如下问题: mysql中的索引直接丢失了 不知道为啥一直报错表找不到 对于默认值 pgsql也丢失了 请问大家有什么好的实践吗? 我考虑的是 直接使用数据库迁移 将数据库脚本转化为pg的语法

    • 最近我考虑了在MySQL数据库中存储历史数据的最佳实践。目前,每个可版本表都有两列-和,都是类型。具有当前数据的记录的填充了其创建日期。当我更新此行时,我将填充更新日期,并使用添加新记录,与前一行中的相同-简单的操作。但是我知道这个表会非常大,非常快,所以获取数据会非常慢。 我想知道您是否有存储历史数据的实践?

    • 问题内容: 最近,我考虑了将历史数据存储在MySQL数据库中的最佳做法。目前,每个可版本控制的表都有两列-和,两者均为类型。具有当前数据的记录已充满了创建日期。当我更新此行时,我填写了更新日期,并添加了与上一行相同的新记录- 简单的东西。但是我知道表会非常快,因此获取数据可能会很慢。 我想知道您是否有任何存储历史数据的做法? 问题答案: 担心“大”表和性能是一个常见的错误。如果您可以使用索引来访问

    • 问题内容: 我们有一个实时的MySQL数据库,该数据库的插入率为99%,每秒约100个。我们希望每天都存档数据,以便我们可以在不影响主实时数据库的情况下对其进行查询。此外,归档完成后,我们要清除实时数据库。 没有(如果可能)锁定INSERT的最佳方法是什么?我们对查询使用INSERT DELAYED。 问题答案: http://www.maatkit.org/具有mk-archiver 将表中的行

    • 问题内容: 我出于好奇而问这个问题。基本上,我的问题是,当您拥有一个需要行条目才能具有像标志作用的事物的数据库时,最佳实践是什么?一个很好的例子就是堆栈溢出的标志,或者是bugzilla中的操作系统字段。可以为给定条目设置标志的任何子集。 通常,我会进行c和c ++的工作,因此我的直觉反应是将无符号整数字段用作一组可以翻转的位…但是我知道,由于多种原因,这不是一个好的解决方案。其中最明显的是可伸缩

    • 我已经为我的app的数据创建了所有的CRUD操作,现在我需要处理数据并创建报告。 根据这些报告的复杂性,我将创建一些汇总或预处理表。这样,我就可以触发一次报告创建,然后高效地获取它们。 我的疑问是我是应该用Java还是用MySQL的存储过程构建所有的报告。 null null 谢谢!