Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 只是将XML/JSON存储在数据库中,用于数据库中未使用的数据?_Javascript_Php_Sql_Xml - Fatal编程技术网

Javascript 只是将XML/JSON存储在数据库中,用于数据库中未使用的数据?

Javascript 只是将XML/JSON存储在数据库中,用于数据库中未使用的数据?,javascript,php,sql,xml,Javascript,Php,Sql,Xml,我有一个小数据库,其中包含一些基本的用户数据(uid、用户名、电子邮件、密码等),用于各种SQL查询和PHP,因此有一个完整的表结构是有意义的 然而,一个新特性将添加几个新表,其中每个用户将“拥有”这些表中的许多行(例如每个用户100KB的数据)。然而,从数据库的角度来看,我真正想做的就是为一个用户设置所有数据,或者为一个用户获取所有数据 然后,只能使用JavaScript在客户端查看和编辑数据。当然,JavaScript不能直接运行SQL查询,在数据被编辑并作为HTTP POST提交之后,通过

我有一个小数据库,其中包含一些基本的用户数据(uid、用户名、电子邮件、密码等),用于各种SQL查询和PHP,因此有一个完整的表结构是有意义的

然而,一个新特性将添加几个新表,其中每个用户将“拥有”这些表中的许多行(例如每个用户100KB的数据)。然而,从数据库的角度来看,我真正想做的就是为一个用户设置所有数据,或者为一个用户获取所有数据

然后,只能使用JavaScript在客户端查看和编辑数据。当然,JavaScript不能直接运行SQL查询,在数据被编辑并作为HTTP POST提交之后,通过跟踪用户所做的任何更改,尝试在PHP中组合正确的更新、插入和删除查询集。该会话有些复杂

相反,我的想法是在数据库中为每个用户设置一个文本字段,并在其中存储JSON或XML。然后,JavaScript可以被赋予填充HTML表的功能,在用户编辑完该表之后,JavaScript只需要从HTML表单收集所有数据并发布。然后,PHP只需要运行SQL查询来覆盖现有数据


虽然这似乎是最简单的方法,但似乎确实有点误用了SQL DB。我还想知道,如果在第一种情况下由PHP生成最初的before edits表,而不是在文档加载后由JS生成,是否会更好?

使用文本字段存储像您这样的情况的数据是一种常见做法。但是,如果您决定这样做,请考虑以下问题:

  • 坚持固定格式。如果将数据存储为纯文本,请注意数据库将不再使用其机制来确保数据完整性和格式统一。因此,如果您有一些具有给定格式的记录,然后对其进行更改并使用新格式添加一些记录,则使用旧格式的记录将不再有效,除非您确保支持这两种格式。因此,您的数据格式应该足够成熟和一致
  • 估计数据长度。您应该知道数据文本的长度,以确保它适合存储在其中的数据库列。有些数据库存在数据类型列不受限制的问题(如
    TEXT
    ),因此您应该了解数据库服务器以及部署配置。通常MySQL和PostgreSQL不会有问题,但根据我的经验,我在Informix方面遇到了严重的问题,所以数据库服务器很重要
  • 不要依赖客户端代码。您提到要通过javascript创建数据。我建议至少将JSON提交到服务器并从中生成另一个JSON以存储在数据库中,或者以其他方式验证它。否则,黑客可能会添加恶意内容,或者执行DB注入,或者如果您在添加自由格式的客户端数据时不采取措施,则可能会破坏您的应用程序。但是,如果数据完全在服务器上生成,那么风险就更小
因此,一般来说,就数据库开发而言,这不是一个坏的做法,但正如您所看到的,它提供了额外的考虑因素。如果你把它们都算出来(我不会假装把它们都包括在我的列表中,只是我个人遇到的最常见的一个),那么你就没事了