Php 在数据库中存储HTML表的数据

Php 在数据库中存储HTML表的数据,php,sql,sql-server,Php,Sql,Sql Server,我正在使用PHP/SQL Server开发一个应用程序,它需要存储大量不同学术项目毕业生的信息,以及毕业后就业人数的信息。。。然后,用户将查询这些内容,他们希望将一个程序与另一个程序进行比较,因此他们需要能够生成显示学生结果的自定义表格。表将类似于以下内容: Program Salary after 1 Year Salary after 2 Years Etc... Engineering Lots

我正在使用PHP/SQL Server开发一个应用程序,它需要存储大量不同学术项目毕业生的信息,以及毕业后就业人数的信息。。。然后,用户将查询这些内容,他们希望将一个程序与另一个程序进行比较,因此他们需要能够生成显示学生结果的自定义表格。表将类似于以下内容:

Program            Salary after 1 Year      Salary after 2 Years         Etc...
Engineering        Lots                     Even more!
Philosophy         Nothing                  Are you kidding me?
所以,这里有一个问题:我应该在数据库中存储这些数据点的单个值,还是只存储表行的原始HTML

换句话说,我是否存储以下内容:

ProgramID    Salary1    Salary2               Etc...
1            Lots       Even More!
2            Nothing    Are you kidding me?
ProgramID   RowHTML
1           <td>Lots</td><td>Even More!</td>...
2           <td>Nothing</td><td>Are you kidding me?</td>
或者我要存储以下内容:

ProgramID    Salary1    Salary2               Etc...
1            Lots       Even More!
2            Nothing    Are you kidding me?
ProgramID   RowHTML
1           <td>Lots</td><td>Even More!</td>...
2           <td>Nothing</td><td>Are you kidding me?</td>
programmaid行html
还有七个!。。。
没什么你在开玩笑吗?

我可以看到两种方法的论据。。。我的直觉告诉我,存储原始HTML会更快——它将消除PHP处理的障碍。但我愿意接受其他解释。

我只会存储原始数据。当你的老板说“让它看起来更新”或其他什么的时候,这将提供改变页面格式/布局的能力。如果您存储了表数据,则会被卡住

我认为在数据库中存储这些数据点的单个值对于管理应用程序会更好,HTML很好,但是当您使用PHP数据库时。。。祝你好运,伙计

所以,这里有一个问题:我应该为这些存储单独的值吗 数据库中的数据点,还是我应该只存储原始的HTML 桌子一排

直截了当的回答:


存储
数据点
,即您可以在以后重新创建的html,这也会使您的查询速度更快。

简短回答:存储单个数据,而不是html


在这里存储HTML没有任何好处。重新生成表可能会容易一些,但您也存储了大量冗余信息,动态构建表一开始并不困难。处理原始数据也容易得多:当您将工资作为一行HTML存储时,您只能按程序排序,但如果您每年单独存储并控制数据类型(示例工资是字符串,但您应该存储整数或浮动,因为您知道工资是一笔钱),你可以选择按毕业生从大学里挣多少钱、十年后挣多少钱等对课程进行排序。同时请记住,你可能并不总是想显示一个表格:你可能想绘制每个专业的收入随时间的变化图,例如,在这种情况下,你需要从和标签中提取工资,为自己创建更多的工作并降低应用程序的速度。

任何RDBMS的简单规则都是只将数据存储在表中,而不存储其他内容

这将使您的数据检索、更新和插入操作快速、简单和安全。在表中存储数据,并在运行时创建HTML表。我在这里演示了当您的表中只存储了数据而没有其他数据时,创建HTML表是多么容易和简单

示例

我已经用了你给出的例子

DECLARE @t TABLE (ProgramID INT,Salary1 VARCHAR(50),Salary2 VARCHAR(50))
INSERT INTO @t VALUES
(1,'Lots','Even More!'),
(2,'Nothing','Are you kidding me?')

DECLARE @tableHTML  NVARCHAR(MAX) ;

SET @tableHTML =
    N'<H1>Students Salaries</H1>' +
    N'<table border="1">' +
    N'<tr><th>ProgramID </th><th>Salary1</th><th>Salary2</th>' +
    CAST ( ( SELECT td = ProgramID,       
                    '',
                    td = Salary1, 
                    '',
                    td = Salary2
                FROM @t    

              FOR XML PATH('tr'), TYPE 
    ) AS NVARCHAR(MAX) ) +
    N'</table>' ;
SELECT @tableHTML;
DECLARE@t表(ProgramID INT,Salary1-VARCHAR(50),Salary2-VARCHAR(50))
插入到@t值中
(一"地段","更多"),,
(2,“没什么”,“你在开玩笑吗?”)
声明@tableHTML NVARCHAR(最大值);
SET@tableHTML=
学生工资+
N“+
N'ProgramID Salary1Salary2'+
强制转换((选择td=ProgramID,
'',
td=薪水1,
'',
td=薪水2
来自@t
对于XML路径('tr'),键入
)作为NVARCHAR(最大值))+
N';
选择@tableHTML;
通过上述查询创建的HTML表


学生薪水计划薪水1薪水21更多七份!2你没开玩笑吧?

可爱。下一个问题是“如何更改值?”——这将需要抽象行对象。但对于快速而肮脏的数据显示,这是功能性的。@DanAndrews,我的答案是为您这样做会得到多少报酬:)谢谢。。。这实际上是我的后续问题。。。最好使用PHP数组处理从原始数据生成表,或者创建一个精心编制的SQL查询来处理它?我已经记下了代码,所以这不是需要代码的问题,只是不知道最佳实践的问题。。。(顺便说一句,我的数据将是静态的……任何更新都将替换整个表。)@JohnChrysostom此查询仅用于演示目的,正如我已经说过的,仅将数据存储到表中,而不存储其他内容,它实际上是数据规范化的第一种形式,只在一列中存储一条信息,并且只使用一列来存储一条信息