我应该选择mysql中的哪种数据类型来使用PHP保存javascript代码?

我应该选择mysql中的哪种数据类型来使用PHP保存javascript代码?,php,javascript,mysql,jsfiddle,Php,Javascript,Mysql,Jsfiddle,我正在创建一个类似于JSFIDLE的网站,用户可以保存javascript代码并检索缩进后的代码。我不知道应该使用哪种数据类型来保存代码,或者是否应该将它们保存在文本文件中。另外,当使用php打印数据时,如何缩进数据?您最好使用随机选择的名称将其保存在文本文件中,并将名称保存到数据库中,或者使用保存的ID作为名称。当然,如果删除数据库中的一行,也必须删除该文件 如果只想将它们保存在数据库中,请选择TEXT或BLOB。如果你不知道长度,varchar不适合大文本 如果你显示/使用用户上传的内容,你

我正在创建一个类似于JSFIDLE的网站,用户可以保存javascript代码并检索缩进后的代码。我不知道应该使用哪种数据类型来保存代码,或者是否应该将它们保存在文本文件中。另外,当使用php打印数据时,如何缩进数据?

您最好使用随机选择的名称将其保存在文本文件中,并将名称保存到数据库中,或者使用保存的ID作为名称。当然,如果删除数据库中的一行,也必须删除该文件

如果只想将它们保存在数据库中,请选择TEXT或BLOB。如果你不知道长度,varchar不适合大文本

如果你显示/使用用户上传的内容,你必须小心照顾那些试图上传的人


关于缩进,如果在文本区域中显示它们,则不会有任何问题。

您可以将数据存储在varchar中,但您可能应该寻求其他存储方式,例如将它们存储在单个*.js文件中。至于缩进,包括缩进字符在内的所有字符都将与js一起保存。

我将使用
BLOB
它比从数据库中获取文件名然后获取文件更快。此外,如果您的站点设置正确,那么可能性很小,但如果您运行node.js或其他程序,则有可能在服务器上执行javascript文件,从而使其存在漏洞。

您应该使用
LONGTEXT
类型。如果可以保证数据小于约8KB,则可以使用
VARCHAR
TEXT
类型()

如果文本可能包含一些二进制数据,您可能必须使用
BLOB
LONGBLOB
类型


关于缩进:您可以在字段中存储制表符或空格以及换行符,基本上将它们视为普通文本文件。

在可执行环境之外,任何程序都是文本。因此,您可以为正在使用的数据库中的字符串使用等效的数据类型?若代码在数据库中,我将如何缩进代码,因为为了避免注入,我将使用HTMLENTITIES、MYSQL\u REAL\u ESCAPE\u STRING和许多其他工具,以便添加值,如etc。。。所以我认为文本是最好的,但是你认为什么是最好的呢?你为什么要使用HTMLENTITIES?这是javascript代码,浏览器不必将其解析为html。另存为BLOB将避免字符集问题。我不希望JS在我的站点上运行,只需要保存代码,它应该缩进,因为用户在创建文件时缩进了它。那么现在我应该使用BLOB还是使用单独的文本文件?@user:BLOB和文本文件将保留制表符。BLOB会更快,但会使数据库越来越大,这通常会导致问题。另存为文本文件会比较慢,但通常情况下,您不应该太在意。是的,这就是我不使用BLOB并将处理文本文件的原因,但还有一个查询,为什么会比较慢?数据大小不确定!。。。它可能是1MB,也可能是1KB,那么我应该怎么做?我应该使用另一个目录中保存的文本文件吗?
LONGTEXT
BLOB
/
LONGBLOB
可能会给您带来一些麻烦,但前提是大小超过1MB或16MB,具体取决于客户端配置。我认为您不会允许代码片段超过1MB,对吗?嗯……没错,但若我从数据库中获取数据,那个么是否可以正确缩进代码?因为使用HTML预标记是行不通的,因为我也在使用HTML实体和MYSQL\u REAL\u ESCAPE\u STRING?看在上帝的份上,求你了!这样你就不用担心逃避任何事情了。在PHP上下文中,这也意味着您必须使用or
PDO
。我不明白您说了什么:(那么缩进呢?缩进保存在数据库中,但当我们从数据库打印它时,它不会缩进,因为PHP中有HTML实体和其他安全函数,如果我不使用该函数,浏览器将解析该代码并运行javascript,我不希望这样,所以将其保存为文本文件很好?
htmlentities()
不删除选项卡/空格。浏览器会删除。请尝试将输出包装在
标记中。否…不能,因为我不希望在我的站点上执行它…我只想存储代码,让用户可以在需要时检索代码,并处理用户在创建文件时所做的缩进